使用gets函式常見問題

2021-07-25 21:13:08 字數 603 閱讀 7217

c語言面試經常會考如下一道題,**有錯誤:

#include

int main() ; 

gets(

string

); 

printf("輸入的字串是:%s \n", string); 

return 0; 

} 這段c程式可能有問題,問題就在於函式gets()的使用。

gets從標準輸入裝置讀字串函式,

可以無限讀取,不會判斷上限,以回車結束讀取。所以如果輸入的字串超過100個,它也不會做檢測,此時就會發生溢位。

從檔案結構體指標stream中讀取資料,每次讀取一行。讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize-1個字元(第bufsize個字元賦'\0'),如果檔案中的該行,不足bufsize個字元,則讀完該行就結束。如若該行(包括最後乙個換行符)的字元數超過bufsize-1,則fgets只返回乙個不完整的行,但是,緩衝區總是以null字元結尾,對fgets的下一次呼叫會繼續讀該行。函式成功將返回buf,失敗或讀到檔案結尾返回null。因此我們不能直接通過fgets的返回值來判斷函式是否是出錯而終止的,應該借助feof函式或者ferror函式來判斷。

跨函式使用記憶體 指標常見問題

include include voidf1 int q intmain 執行結果 分析 靜態 main函式中 p 指向 i 的位址,所以,p i 呼叫 f1 函式時,q 拷貝了 p 的內容即 i 的位址,故 q p i 所以 i 的值改變了。include include voidf2 int q...

oracle使用常見問題

oralce常見問題 1.使用者被鎖,解鎖方法 alter user username account unlock 2.啟動 lsnrctl status start stop c documents and settings administrator lsnrctl status 3.開啟本地...

jwplayer使用常見問題

修改方法 去掉logo水印 在檔案 com longtailvideo jwplayer view view.as 中找到 logolayer.addchild logo 將其注釋掉即可。去掉右鍵about官網位址鏈結。在檔案 com longtailvideo jwplayer view righ...