在程式設計實踐一書中,作者說如下程式會出問題:
int main()
{
char buf[20];
gets(buf);
if(...)
}
這是因為gets不限制讀入資料的長度,是以應當由fgets來代替。這一點本人同意。但是作者有一個觀點,本人不能贊同。
作者說,如果gets中讀入的資料太多,可能會把函數(gets)的傳回位址也覆寫。我們都知道,函數的傳回位址在棧中,就本程式而言,其在棧中的位置的位址肯定比buf的位址低,而buf資料而言是向上生長的,怎麼可能覆寫掉函數的傳回位址呢?
是以,本人認為,作者叙述有誤。歡迎高手指教。