如何在C上更改字符串中的单个字符?

Blo*_*key 4 c arrays character

试图制作一些基本的刽子手代码来练习学习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);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,它只是在每次循环时打印(null).这可能是一个基本的修复,但我是C的新手,在网上找不到任何关于它的东西

nul*_*0tr 6

要打印字符而不是字符串更改:

printf("%s", gWord[a]);
Run Code Online (Sandbox Code Playgroud)

至:

printf("%c", gWord[a]);
Run Code Online (Sandbox Code Playgroud)

但在此之前还要改变:

gWord[a] = "_";
Run Code Online (Sandbox Code Playgroud)

至:

gWord[a] = '_';
Run Code Online (Sandbox Code Playgroud)

最后一个问题是您将字符串文字分配给单个字符.

编辑:

同样正如@ 4386427所指出的那样,gWord在以后打印它之前,你永远不会零终止printf("%s", gWord).你应该改变最后一行:

printf("%s", gWord);
Run Code Online (Sandbox Code Playgroud)

至:

gWord[a] = '\0';
printf("%s", gWord);
Run Code Online (Sandbox Code Playgroud)

因为否则这很可能会导致缓冲区溢出.