C字符串被替换与通过编辑字符数组被更改
我无法在标题中很好地解释我的问题。下面是两套代码:
int main() {
char str[81] = "Hello World";
scanf("%s", str);
str[3] = 'X';
printf("%s", str);
return 0;
}
输入 789 时,输出为“789Xo World”,这表明 scanf 函数正在用输入替换 char 数组的前 3 个索引,而 str[3] 行将第 4 个索引替换为 'X'。这对我来说很有意义。
int main() {
char str[81] = "Hello World";
scanf("%s", str);
printf("%s", str);
return 0;
}
输入 789 时,输出 789。 Scanf 不再替换 str 的前 3 个索引,而是替换整个内容。让我感到困惑的是,手动更改第 4 个索引 (str[3]) 会以某种方式使程序更改 str 的前面而不是完全替换它?
我对 C 很陌生,在我的教科书中找不到任何解释。提前感谢您的帮助。
回答
C 中的字符串由许多字符和末尾的