九一热线精品视频6_四川少妇XXXX内谢欧美_四虎国产精品永久入口一_越南无码精品_国产亚欧美精品久久久

c語(yǔ)言fgets函數(shù)用法_c語(yǔ)言gets函數(shù)用法

2023-02-26 16:03:18     來(lái)源:互聯(lián)網(wǎng)

1、gets()函數(shù)用于從緩沖區(qū)中讀取字符串,其原型如下:char *gets(char *string);gets()函數(shù)從流中讀取字符串,直到出現(xiàn)換行符或讀到文件尾為止,最后加上NULL作為字符串結(jié)束。

2、所讀取的字符串暫存在給定的參數(shù)string中。

3、【返回值】若成功則返回string的指針,否則返回NULL。


(資料圖片僅供參考)

4、注意:由于gets()不檢查字符串string的大小,必須遇到換行符或文件結(jié)尾才會(huì)結(jié)束輸入,因此容易造成緩存溢出的安全性問(wèn)題,導(dǎo)致程序崩潰,可以使用fgets()代替。

5、擴(kuò)展資料:功能從stdio流中讀取字符串,直至接受到換行符或EOF時(shí)停止,并將讀取的結(jié)果存放在buffer指針?biāo)赶虻淖址麛?shù)組中。

6、換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘’空字符,并由此來(lái)結(jié)束字符串。

7、返回值讀入成功,返回與參數(shù)buffer相同的指針;讀入過(guò)程中遇到EOF(End-of-File)或發(fā)生錯(cuò)誤,返回NULL指針。

8、所以在遇到返回值為NULL的情況,要用ferror或feof函數(shù)檢查是發(fā)生錯(cuò)誤還是遇到EOF。

9、注意本函數(shù)可以無(wú)限讀取,不會(huì)判斷上限,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時(shí)不發(fā)生溢出。

10、如果溢出,多出來(lái)的字符將被寫(xiě)入到堆棧中,這就覆蓋了堆棧原先的內(nèi)容,破壞一個(gè)或多個(gè)不相關(guān)變量的值。

11、這個(gè)事實(shí)導(dǎo)致gets函數(shù)只適用于玩具程序,為了避免這種情況,我們可以用fgets(stdin) (fgets實(shí)際上可以讀取標(biāo)準(zhǔn)輸入(即大多數(shù)情況下的鍵盤(pán)輸入),具體參閱fgets詞條)來(lái)替換gets()。

12、在V7的手冊(cè)(1979年)中說(shuō)明:為了向后兼容,gets刪除換行符,gets并不將換行符存入緩沖區(qū)。

13、參考資料:百度百科-gets。

本文分享完畢,希望對(duì)大家有所幫助。

關(guān)鍵詞: 這種情況 百度百科 參考資料

明星

電影