我知道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/