[英]String is adding special characters
我开始学习有关C的教程,然后(从头开始)尝试做一个程序,该程序选择一个单词,您必须猜测字母,直到找到该单词或用尽所有尝试。
但是我被困在弦乐部分,真的很奇怪:
srand(time(NULL));
char pWord[6][15] = {"chocolate","peanut","bowling","helicopter","school","controller"}; // Possible words
int repeat=0;
int rNum = rand()%6;
char solution[strlen(pWord[rNum])];
while(repeat<strlen(pWord[rNum])) {
solution[repeat]=pWord[rNum][repeat];repeat++;
}
printf("Answer : %s", solution); printf("\n");
printf("R Answer : %s", pWord[rNum]); printf("\n");
printf("R length : %i", strlen(pWord[rNum])); printf("\n");
strcpy(solution,pWord[rNum]);
对于保龄球来说很好,但是对于其他人则随机添加奇怪的特殊字符。
我不知道为什么会这样(我来自java,有点懒惰和容易)。
在C中,字符串以空字符'\\0'
结尾。 因此,当您声明字符串solution
,您需要在char数组的长度上添加一个,因为strlen()
函数不会在末尾计算空字符。
char solution[strlen(pWord[rNum])+1];
然后在while循环之后,您需要将'\\0'
分配给char数组的最后一个元素:
while(repeat<strlen(pWord[rNum])) {
solution[repeat]=pWord[rNum][repeat];
repeat++;
}
solution[repeat]='\0';
进行字符串复制的更好方法是使用strcpy()
函数而不是while循环:
strcpy(solution, pWord[rNum]);
这样,您不必将空字符分配给最后一个字符。 此功能为您完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.