我用 C 写了一个简单的程序。一个输入字符串并显示它的长度的程序。
#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;
}
程序不包含警告或错误。
在运行时,我输入值“melwinsunny”作为输入。没有错误,显示的结果是:
Enter the name : melwinsunny
The name entered is : melwinsunny
length of string is : 11
为什么会这样?我已经声明了长度为 4 的字符数组 ( char a[4] )。请解释。
这是否意味着字符数组是动态的?
最佳答案
不,C 中的数组不是动态的,您看到的是由于缓冲区溢出导致的未定义行为。
这就是您不应该使用 gets()
的原因,而应使用 fgets()
,这样可以防止像这样的缓冲区溢出。
关于c - C 中的字符数组是动态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21250296/