试着编写一些基本的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);

否则很可能导致缓冲区溢出。

07-24 09:44