试着编写一些基本的hangman代码来练习学习c,但我似乎无法在程序中更改单个字符
int main(int argc, char *argv[]) {
int length, a, x;
x = 0;
char gWord[100];
char word[100] = "horse";
length = strlen(word) - 1;
for(a = 0; a<= length; a = a + 1){
gWord[a] = "_";
printf("%s", gWord[a]);
}
printf("%s", gWord);
}
当我尝试运行这个函数时,每次循环都会打印(空)。这可能是一个基本的解决方案,但我对c还不熟悉,在网上找不到任何关于它的信息
最佳答案
要打印字符而不是字符串更改:
printf("%s", gWord[a]);
到:
printf("%c", gWord[a]);
但在这种变化之前:
gWord[a] = "_";
到:
gWord[a] = '_';
最后一个问题是,您将字符串文字指定给单个字符。
编辑:
同样,正如@4386427所指出的,在稍后用
gWord
打印之前,永远不要将printf("%s", gWord)
置零。您应该将最后一行更改为:printf("%s", gWord);
到:
gWord[a] = '\0';
printf("%s", gWord);
否则很可能导致缓冲区溢出。