Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? 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 );

最佳答案

\00相同。两者都是字符数组的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