在程序设计实践一书中,作者说如下程序会出问题:
int main()
{
char buf[20];
gets(buf);
if(...)
}
这是因为gets不限制读入数据的长度,所以应当由fgets来代替。这一点本人同意。但是作者有一个观点,本人不能赞同。
作者说,如果gets中读入的数据太多,可能会把函数(gets)的返回地址也覆盖。我们都知道,函数的返回地址在栈中,就本程序而言,其在栈中的位置的地址肯定比buf的地址低,而buf数据而言是向上生长的,怎么可能覆盖掉函数的返回地址呢?
所以,本人认为,作者叙述有误。欢迎高手指教。