为什么C会在我的字符数组中添加奇怪的字符?
我正在做一个刽子手项目,正如你在我的代码中看到的,在某些情况下,它会在我的字符串中添加一些奇怪的字符。不总是,但大多数时候。(例如:鼠标=>鼠标@ 因为我不能做字符串比较,而且也很难看。有什么解决办法吗为什么C会在我的字符数组中添加奇怪的字符?,c,character,C,Character,我正在做一个刽子手项目,正如你在我的代码中看到的,在某些情况下,它会在我的字符串中添加一些奇怪的字符。不总是,但大多数时候。(例如:鼠标=>鼠标@ 因为我不能做字符串比较,而且也很难看。有什么解决办法吗 #include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> char animals [8][20] = {"LION" ,"GIRAFFE","OC
#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!") ;
}
}
#包括
#包括
#包括
#包括
动物[8][20]={“狮子”、“长颈鹿”、“章鱼”、“犀牛”、“蜈蚣”、“大象”、“老鼠”、“狗”};
int i;
int main(){
srand(时间(0));
int选择;
选择=rand()%7;
整数长度;
printf(“%s”,动物[选择];
长度=strlen(动物[选择]);
字符结果[长度];
对于(i=0;i
strlen(动物[choose])在字符串中不包含“\0”NUL终止字符,因此在创建结果时需要在长度中添加一个字符。您还需要像这样将终止结果设为null
char result[length+1];
result[length] = '\0';
首先,我想你是说
choose = rand() % 8;
^^^
因为数组动物声明为
char animals [8][20] = /*...*/;
^^^
此调用中使用了此格式说明符“%s”
printf("%s", result) ;
设计用于输出以零结尾的字符串。但是字符数组结果
不包含字符串
你可以写
char result[length + 1] ;
for(i=0; i < length;i++) {
result[i] = '_' ;
}
result[i] = '\0';
char结果[长度+1];
对于(i=0;i
@BLUEPIXY我刚刚意识到。我不习惯使用它们。顺便说一句,程序的第一行有未定义的行为。缩进/间距错误。请修复。