Программа не выводит полную строку
Я изучаю 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.