Программа не выводит полную строку

Я изучаю C, и я столкнулся с проблемой при печати строки, содержимое которой я генерировал случайно.

Код ниже выводит только первые 89 символов, и мне нужно получить целую 1000.

Я пытался найти похожие вопросы и найти учебники, но не смог найти объяснения. Любая помощь приветствуется.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    srand(1000);
    int i;
    char *niz;
    niz = calloc(1001, sizeof(char));
    for (i = 0; i < 1000;i++){
        int randbroj = rand() % 62;
        if (randbroj < 10){
            niz[i] = randbroj + 48;
        }
        if (randbroj > 10 && randbroj < 36){
            niz[i] = randbroj + 55;
        }
        if (randbroj > 35 && randbroj < 62){
            niz[i] = randbroj + 61;
        }
    }
    niz[1000] = '\0';
    printf("%s",niz);
    return 0;
}

1 ответ

Решение

calloc() вернусь 0 заполненная память. Так что, в вашем случае, если ни один из if проверяет совпадение (что происходит в случае randbroj == 10) niz[i] не получит никакого нового значения и будет содержать значение по умолчанию 0, которое является значением для нулевого терминатора.

Ваша строка заканчивается там.

Решение: Добавьте проверку для всех возможных значений, включая 10.

Другие вопросы по тегам