我正在学习C语言,在打印随机生成的字符串时遇到了一个问题。
下面的代码只打印出前89个字符,我需要得到1000个字符。
我试过寻找类似的问题和查找c教程,但找不到解释。如有任何帮助,我们将不胜感激。
#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;
}
最佳答案
calloc()
将返回已满的内存。因此,在您的情况下,如果没有一个0
检查匹配(在if
==10的情况下会发生这种情况),则randbroj
将不会获得任何新值,并保持默认的0值,即空终止符的值。
你的绳子就在那儿。
解决方案:添加对所有可能值的检查,包括10。
关于c - 程序不输出完整的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34289601/