我正在开发一个刽子手项目,正如您在我的代码中看到的,在某些情况下它会向我的字符串添加一些奇怪的字符。并非总是如此,但大多数时候都是如此。 (例如:鼠标 => 鼠标@ 由于我无法进行字符串比较,而且它也很难看。有什么解决办法吗?
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
char animals [8][20] = {"LION" ,"GIRAFFE","OCTOPUS", "RHINOCEROS","CENTIPEDE", "ELEPHANT", "MOUSE", "DOG"};
int i ;
int main() {
srand(time(0));
int choose;
choose = rand()% 7;
int length;
printf("%s", animals[choose]);
length = strlen(animals[choose]);
char result[length];
for(i=0; i< length;i++) {
result[i] = '_' ;
}
printf("%s", result);
while(1) {
printf("\nEnter guess char!: ") ;
char guess ;
scanf(" %c", &guess) ;
guess = toupper(guess) ;
hangman(guess, result, animals[choose], length ) ;
}
return 0;
}
void hangman (char guess, char result[], char word[], int length ){
for(i=0; i< length; i++) {
if(guess == word[i]) {
result[i] = guess ;
}
}
printf("%s", result) ;
if(strcmp(result, word)== 0 ){
printf("gratulation!") ;
}
}
最佳答案
strlen(animals[choose]) 字符串中不包含“\0”NUL 终止字符,因此在创建结果时需要在长度上加一。您还需要像这样将结果设为 null;
char result[length+1];
result[length] = '\0';
关于c - 为什么 C 向我的 char 数组添加奇怪的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43621216/