字符串中间的'\ 0'是否可以识别为C中字符串的结尾?

时间:2019-01-24 02:04:34

标签: c string

我在C语言中知道'\0'总是在字符串的结尾,但是'\0'总是在字符串的结尾吗?

就像“ 1230123”一样可以识别为“ 123”吗?

该问题的一个版本使用符号'/0'代替了'\0'

3 个答案:

答案 0 :(得分:2)

根据定义,值为0的字节标记字符串的结尾。因此,如果您有这样的事情:

char s[] = { 'a', 'b', 'c', '\0', 'd', 'e', 'f', '\0' };
printf("%s\n");

它将打印abc

这与"1230123"不同,在字符串中,第4个字符不是值0,而是字符'0',其ASCII码为48。

答案 1 :(得分:2)

空终止符表示为Locations.find({ '_id': apartment.location }).then(result => result[0]); 而不是\0,它总是标记字符串的结尾,因为在C中,字符串实际上是一维以零终止的字符数组字符 /0

\0

与此相同

char s[] = "1230123";

检查此示例:

char s[] = {'1', '2', '3', '0', '1', '2', '3', '\0'};
                            |                    |
                    This is character '0'        |
                    whose decimal value is 48    |
                                                 |
                                     This is null terminating character
                                     whose decimal value is 0

输出:

#include <stdio.h>

int main (void)
{
    int x,y,z;
    char s1[] = "1230123";
    char s2[] = {'1','2','3','\0','4','5','6','\0'};
    printf ("%s\n", s1);
    printf ("%s\n", s2);
    return 0;
}

答案 2 :(得分:0)

字符串文字可以在中间有'\0'

字符串的末尾只有'\0'

'\0'是_null字符,并且值为0。'0'是零字符。
参见value of '\0' is same ... 0?


作为语言的一部分,

C具有字符串文字

下面的两个字符串文字的大小为8:您看到的7加上1没有显式编码的尾随 null字符 '\0'

"abc-xyz"    // size 8
"abc\0xyz"   // size 8
作为标准库的一部分,

C定义了一个 string

  

字符串是连续的字符序列,以第一个空字符结尾并包含第一个空字符。

许多str...()函数只能处理直到第一个 null字符的数据。

strlen("abc-xyz")  --> 7
strlen("abc\0xyz") --> 3