c - 字符串中的第二个空字符被忽略

标签 c arrays string null initialization

我正在用 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/

相关文章:

c++ - 通过套接字发送的内容的数据类型是什么?

php - 如何修复 PHP 中的警告非法字符串偏移

c++ - C++ 中的 char 数组无法正常运行

javascript - 访问 Ajax 外部在成功回调中创建的数组

javascript数组 - 在给定键处增加值

java - 在循环中添加输出/字符串

python - 在 Python 中拆分空字符串时,为什么 split() 返回一个空列表,而 split ('\n' ) 返回 ['']?

c - 递归 collat​​z 实现的意外错误

C 中的条件编译,当函数使用 automake 具有不同的原型(prototype)时

c++ - 多线程暴力和递归多维循环。其他方式?