c - C 中字符串如何终止?

标签 c null-terminated

我知道c中的字符串将以字符\0终止。

但是,如果我执行 char a[5]="abcd\n"\0 会在哪里?

或者,每当我尝试使用 char[] 存储字符串时,我是否需要至少为 \0 保留一个位置?

感谢您的帮助!

最佳答案

你应该这样做:

char a[]="abcd\n";

不指定大小让编译器计算出缓冲区大小。实际缓冲区的大小为 6,以容纳 5 个字节 + 1 个字节用于终止零。当您在没有赋值的情况下键入“something”时,编译器会将该字符串放在程序中的专用位置,最后一个字符后至少有 1 个零字节。

写作 字符 a[5]="abcd\n" 是一种不好的做法,因为它会导致像 strcpy() 这样的函数以未定义的方式运行,因为变量 'a' 不是 c 字符串,而只是字符缓冲区,碰巧它似乎都是可打印/可见 + 终止\n

关于c - C 中字符串如何终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75469406/

相关文章:

c - 合并 vector 非常快

C、getc/fgetc - 终端 null

c - fgets() 中的包装函数

c - 在非 NULL 终止的文件中搜索以 NULL 终止的字符串

c++ - 如何确保在采用数组的 constexpr 函数中该数组以 NULL 结尾?

c - C 程序中的 .eh_frame 部分有什么用?

c - strcmp 不工作?

c++ - 这是合法的 C++ 代码吗?

C 指针值混合

c - 将原始数据写入文件