为什么我定义了一个占15个字符的字符串,输入字符的空间超过了15也能全部输出
#include<stdio.h>int main()
{
char st;
printf("input string:\n");
gets(st);
puts(st);
}
这就意味着你已经侵占了其他变量的存储空间,会直接破坏其它变量的内容,如果被破坏这个变量需要使用,会导致程序崩溃或者运行结果出轨。 gets不检测你的数组长度。
也就意味着你自行分配足够长度的数组,并限制输入字符的长度。以确保程序的健全。 c 相信程序员 要想避免内存污染问题 ,就要用fgets函数,gets容易造成内存污染
fgets(st,sizeof(st),stdin);
页:
[1]