我正在用 C 初始化一个字符串(字符数组),我注意到即使我在字符串中输入第二个空字符(\0),它也会被忽略并且不会返回任何错误。请参阅下面我的意思:
#include <stdio.h>
int main()
{
char word[]= {'H','e','l','l','o','\0','\0'};
char word2[]= "Hello\0\0";
printf("Word is : %s\n",word); // Prints "Hello"
printf("Word 2 is : %s\n",word2); // Prints "Hello" as well
return 0;
}
您能解释一下原因吗?
最佳答案
在 C 语言中,“字符串”定义为以 nul 结尾的非 nul 字符序列。所以第二个 nul 不是字符串的一部分。第一个 nul 标记结束——这就是当您使用 %s
格式说明符时 printf
知道要打印多少个字符的方式。
关于c - 字符串中的第二个空字符被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388492/