我在C中得到了这段代码,但我不明白为什么输出是:
输出:“地狱”
我希望它是“Hell00000000”而不是“Hell”。 能不能请说明为什么只有“地狱”?
char str[666];
char * x = str + 4;
strcpy ( str, "Hello world!" );
while ( *x )
{
*x ++ = 0;
}
printf ( "%s", str );
答案 0 :(得分:3)
\0
和 0
相同。两者都是nul
字符数组的终止字符。
0
和 '0'
不同。第一个具有0
秒的ascii代码,其ascii代码为48
。
在这里,你是非故意放置nul终止字符。这就是你Hell
的原因。
如果您想获得结果Hell00000000
char str[666];
char * x = str + 4;
strcpy ( str, "Hello world!" );
while ( *x )
{
*x = '0'; //<------This is different.
x++;
}
printf ( "%s", str );
答案 1 :(得分:2)
字符串中的值0
不是有效字符(或者更准确地说,它是通常表示“无字符”的NUL
字符)并用作结束标记C中的字符串。
您将其与'0'
(可打印字符)混淆,如果您使用的是基于ASCII的编码,则会为48
。
答案 2 :(得分:0)
您将其更改为0
,即nul字符,等于'\0'
。如果要将0添加为char,则必须使用'0'
。