我真的不明白为什么“ u'est”会被删除?
int main()
{
char dieser[15] = "Stan nu'est" ;
dieser[6] = 0;
printf(dieser);
return 0;
}
答案 0 :(得分:1)
实际上,您的字符串并未真正删除。值0(或'\ 0')表示字符串的结尾。因此,在找到第一个0时,printf会停止打印您的字符串。 如果您更改代码,请执行以下操作:
int main()
{
char dieser[15] = "Stan nu'est" ;
dieser[6] = 0;
printf(dieser);
printf(&dieser[7]);
return 0;
}
您将在控制台中看到“ Stan n'est”。这意味着您的字符串继续在内存中,但是在字符串的第6位上您使用的是'\ 0'而不是'u'。
答案 1 :(得分:1)
写作时
dieser[6] = 0;
您正在为该字符分配值 0 。程序将字符串打印到屏幕时,此值映射到ASCII表。
如果您查看ASCII table,将会看到值为 0 的字符是NUL
,它是空终止符。它指示字符串的结尾。
所以正在发生的事情是:您正在字符串中间插入一个字符串终止符。当 printf 函数读取字符串时,它将找到该字符并停止。这样才能得到切出的字符串。