【发布时间】:2015-11-21 10:17:01
【问题描述】:
我对 C 编程很陌生,所以请随时纠正我,我坚持。我对 C 中字符串的基本理解是,当我们初始化一个字符串时,会在字符串的末尾自动分配一个空字符,并且空字符不能被读取或写入,而只能在内部使用。
因此,当我创建一个大小为 4 的字符串 char str[3] 并为其分配一个单词“RED”并使用 puts 函数或 printf("%s",str) 打印它时,我得到一个不寻常的输出,打印为 RED(SMIILEY FACE)
然后我再次将字符串的大小减小到 char str[2] 并将 RED 分配给它,然后对其进行编译,然后再次收到一个输出说明 RE(Smiley face)
如果有人可以向我解释一下,我将不胜感激。下面贴出C代码
int main()
{
char s1[3]="RED";
char s2[]="RED";
puts(s1);
puts(s2);
printf("%s",s1);
return 0;
}
【问题讨论】:
-
"当我们初始化一个字符串时,会自动分配一个空字符" -- 前提是你为它提供了足够的空间。
标签: c null-character