代码之家  ›  专栏  ›  技术社区  ›  slevy1

C语言中的空字符和字符串

c
  •  2
  • slevy1  · 技术社区  · 7 年前

    #include <stdio.h>
    #include <strings.h>
    
    int main(void){
    
    char * str = "\012\0345";
    
    char testArr[8] = {'\0','1','2','\0','3','4','5','\0'};
    
    printf("%s\n",str);
    
    printf("**%s**",testArr);
    
    return 0;
    }
    

    请参阅实时代码 here

    另外,对于使用相同字符创建的数组,数组testArr中包含的数据不会显示任何内容。是否因为某种原因,一旦遇到第一个null,其他所有内容都会被忽略?如果是这样,为什么包含相同字符的字符串str不会出现相同的行为?

    1 回复  |  直到 7 年前
        1
  •  8
  •   Eric Postpischil    7 年前

    一个八进制转义序列是 \ "\012\0345" ,它将其解释为序列 \012 (哪一个是10),顺序是 \034 (28)和字符 5 .

    "\00012\000345" \000 人物 1 2 ,顺序 \000 ,以及人物 3 , 4 和 5. . (还将自动附加一个空终止字符。)

    当你打印的时候 "\012\0345" ,代码为10和28的字符被打印出来,但没有明显的效果。(您的C实现可能使用ASCII,在这种情况下,它们是控制字符。 \012 这是一条新线,所以它应该引起一条线的前进,但您可能没有注意到这一点。 \034

    当你打印的时候 testArr ,第一个位置的空字符以字符串结尾。