首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scanf允许在静态数组中存储更多字符

Scanf允许在静态数组中存储更多字符
EN

Stack Overflow用户
提问于 2019-05-27 00:27:54
回答 1查看 25关注 0票数 0

在下面的代码中,您可以看到,我的数组的长度是10。当我使用scanf将一些字符读入数组时,它允许我超过这个数字。为什么会这样呢?

我已经尝试过较小大小的字符串,并且我看到了我所期望的:一个关于“检测到堆栈崩溃”的错误。

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    char nome[10];
    printf("Nome:   ");
    scanf("%s", nome);
    printf("\n\n%s\n", nome);
    return 0;   
}
EN

回答 1

Stack Overflow用户

发布于 2019-05-27 00:31:24

正如您所指出的,scanf%s格式说明符的前提条件是目标数组必须有足够的空间。

然而,当你稍微超过这个数字时,它可能会偶然工作的事实并不意味着它总是有效的。这是未定义的行为。

特别是,这里最有可能发生的情况是,当您只覆盖几个额外的字符时,您不会触发堆栈崩溃检测器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56315365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档