我正在解释基本的C数据类型以及它们如何对某人起作用,当我翻过char数组时,我创建了一个长度为5的char数组,我声称他不能输入你的名字,因为他的名字是长度为7但最终发生了, 我不知道这是怎么发生的 可以请某人向我解释这种行为是怎么发生的?
这是我用过的代码
#include<stdio.h>
#include<math.h>
int main(){
char a[2] ;
scanf("%s",&a);
printf("%s",a);
}
答案 0 :(得分:2)
你只是得到了未定义的行为。
在你的代码中,scanf()
无法知道最大尺寸(它怎么可能,它只是一个功能)而且只会假设你知道你是什么?做的。
为防止这种情况,请传递以下信息:
const size_t got = scanf("%1s", a);
if(got == 1)
printf("Read '%s'\n", a);
请注意,在依赖具有有效值的变量之前,scanf()
的返回值是一件好事。它可能会失败。