MEL*_*WIN 1 c arrays gets dynamic
我在C中编写了一个简单的程序.一个程序用于输入一个String并将其与长度一起显示.
#include<stdio.h>
int main()
{
char a[4];
printf("Enter the name : ");
gets(a);
printf("\nThe name enterd is : %s",a);
printf("\nLength of string is : %d",strlen(a));
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序不包含警告或错误.
在运行时,我输入值" melwinsunny "作为输入.没有错误,显示的结果是:
Enter the name : melwinsunny
The name entered is : melwinsunny
length of string is : 11
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我已经声明了长度为4的字符数组(char a [4]).请解释.
这是否意味着字符数组是动态的?
不,C中的数组不是动态的,你看到的是由于缓冲区溢出而导致的未定义行为.
这就是你不应该使用的原因gets(),fgets()而是使用,这样可以防止缓冲区溢出.