我正在学习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;
}
答案 0 :(得分:3)
calloc()
将返回0
已填充的内存。因此,在您的情况下,如果if
检查都不匹配(在randbroj
== 10的情况下会发生这种情况),niz[i]
将不会获得任何新值并保持默认值0 value,它是null-terminator的值。
你的字符串在那里结束。
解决方案:添加所有可能值的检查,包括10.