我在C语言中知道'\0'
总是在字符串的结尾,但是'\0'
总是在字符串的结尾吗?
就像“ 1230123”一样可以识别为“ 123”吗?
该问题的一个版本使用符号'/0'
代替了'\0'
。
答案 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