我编写了以下程序:
char name[100], firstDigits[13], cards[5000][16];
srand(1019336);
int i, j;
char c = '0';
for(i=0;i<13;i++){
c = '0' + (rand() % 43);
while(c > 57 && c < 65){
c = '0' + (rand() % 43);
}
firstDigits[i] = c;
}
printf("%s \n", firstDigits);
for(i=0;i<5;i++){
for(j=0;j<13;j++){
cards[i][j] = firstDigits[j];
}
}
for(i=0;i<5;i++){
for(j=13;j<16;j++){
c = '0' + (rand() % 43);
while(c > 57 && c < 65){
c = '0' + (rand() % 43);
}
cards[i][j] = c;
}
}
printf("%s \n", cards[1]);
第一个循环生成一个包含 13 个字符的字符串,其中包含 0-9 和 A-Z。 然后我想生成一个包含 5000 个字符串的数组,其中每个字符串的前 13 个“字母”是firstDigits[13] 的字母。问题是,当我尝试打印上面这样的字符串之一时,我得到了数组中所有字符串的输出!为什么会发生这种情况?
最佳答案
C 字符串必须以 null 结尾。 Printf 将输出字符,直到达到空值为止。生成随机字符串后,在末尾添加“\0”。当然,您必须将数组大小增加 1 才能容纳它。
关于c - 从 C 中的字符串数组打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381628/