作者:书友395154 | 来源:互联网 | 2022-12-02 15:27
试图制作一些基本的刽子手代码来练习学习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);
}
当我尝试运行它时,它只是在每次循环时打印(null).这可能是一个基本的修复,但我是C的新手,在网上找不到任何关于它的东西
1> nullp0tr..:
要打印字符而不是字符串更改:
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);
因为否则这很可能会导致缓冲区溢出.