<分区>
#include<stdio.h>
int main()
{
char name[1];
scanf("%s",name);
printf("%s",name);
}
我可以通过这个声明读取任意大小的字符串
<分区>
#include<stdio.h>
int main()
{
char name[1];
scanf("%s",name);
printf("%s",name);
}
我可以通过这个声明读取任意大小的字符串
最佳答案
首先,这是未定义的行为。在这种情况下会发生什么是不可预测的。
但是,我将给出一个带有附加变量的额外代码示例,以说明这种方法可能出现的问题。
int main()
{
char name[1];
int a=1;
printf ("a = %d\n",a);
scanf("%s",name);
printf("%s\n",name);
printf ("a = %d\n",a);
}
这是带有附加变量 a
的原始程序,它被初始化为 1 且未更改。
Output
a = 1 aaaa aaaa a = 6381921
如您所见,a
的值已通过输入一个大字符串而更改。
关于c - 我已经在 C 中声明了一个大小为 1 的字符数组,但我已经读取了一个大小为 10 的字符串,但给定的代码工作得很好。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53222720/
相关文章:
c - STDIN 重定向 : how to make program end once fgets() reads an expected ending line
javascript - 如何在没有 I 的情况下使用正则表达式验证 A-K 范围?
javascript - JS : Random String without Repeating Same String Twice
c - clock_getres 的使用 - 新手 Linux C
c - 在 vfork()/clone() 中调用 execv() 之前设置 setuid()