Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,因此它是on-topic,用于堆栈溢出。
2年前关闭。
我用C语言获得了这段代码,但是我不明白为什么输出是:
输出:“地狱”
我希望它是“ Hell00000000”,而不是“ Hell”。
能否请您解释为什么只有“地狱”?
想改善这个问题吗? Update the question,因此它是on-topic,用于堆栈溢出。
2年前关闭。
我用C语言获得了这段代码,但是我不明白为什么输出是:
输出:“地狱”
我希望它是“ Hell00000000”,而不是“ Hell”。
能否请您解释为什么只有“地狱”?
char str[666];
char * x = str + 4;
strcpy ( str, "Hello world!" );
while ( *x )
{
*x ++ = 0;
}
printf ( "%s", str );
最佳答案
\0
和0
相同。两者都是字符数组的nul
终止字符。0
和'0'
不同。第一个的ASCII码为0
,第二个的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 );
关于c - C字符串中“0”,0和“\0”之间的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47409808/
10-11 15:13