gpt4 book ai didi

c - char 数组是否为 null 终止符分配一个额外的空间?

转载 作者:行者123 更新时间:2023-11-30 14:38:27 24 4
gpt4 key购买 nike

如果我分配一个大小为4的char数组,然后通过scanf输入4个字符。该程序有效,但为什么呢? AFAIK,您需要额外的一个空格作为空终止符,对吧?如果我输入 5 个字符,它就会开始显示一些错误:

*** stack smashing detected ***: <unknown> terminated
Aborted.
int main(int argc, char const *argv[])
{
char buffer[4];
scanf("%s", buffer);
printf("%s %d", buffer, strlen(buffer));
return 0;
}

最佳答案

这是未定义的行为,这意味着任何事情都可能发生。在这种情况下,最有可能的情况要么正常工作,要么因段错误或其他与内存访问相关的问题而崩溃。

是的,您需要一个额外的字节作为空终止符。

关于c - char 数组是否为 null 终止符分配一个额外的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56609960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com