今天在翻《c語言參考手冊》檢視檔案操作的相關函式時,看到fgets() 與 gets()的一些「微妙」的地方
另外《c語言參考手冊》是c程式設計師身邊的一本非常好的「詞典」,剛開始學習c的時候,或許用不上這書(只因為初學者對裡面的內容看得不是很明白)但是覺得自己學到有一定程度的時候,這本書絕對是一本十分好的工具書!
題外話就到此為止,入正題:
這篇文章主要簡單地說說fgets() 和 gets()
首先看看函式原型:
char* fgets(char *s, int n, file *stream);
char* gets(char *s);
一般使用fgets函式,都是讀取檔案當中的n-1個字元到s中,其實,此函式還有乙個很好的用處就是從標準輸入流中讀取字串,而且不用擔心輸入的字元個數超出了字元陣列的大小而導致溢位的問題!要怎樣做呢?如下:
char str[10];
fgets(str, siezof(str), stdin);
而如果使用gets函式的話,就不能保證上述的問題不會出現(輸入的字元個數超出了字元陣列的大小而導致溢位) 不信你可以執行下面的**:
char str[10];
gets(str);
當然你得輸入10個以上的字元才能看到問題
到這裡,fgets()的好處就不用再詳細說了。值得注意的是:謹記fgets()只讀取n-1個字元。所以,fgets()讀取到換行符、檔案尾或讀完n-1個字元便會進行返回
fgets與gets的區別
首先看看他們各自的定義 gets 從stdin流中讀取字串,直至接受到換行符或eof時停止,並將讀取的結果存放在buffer指標所指向的字元陣列中。換行符不作為讀取串的內容,讀取的換行符被轉換為 0 空字元,並由此來結束字串。fgets 讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsi...
fgets與gets的區別
1.fgets函式 功能 用於從檔案中讀取一字串 函式原型 char fgets char buf,int bufsize,file stream 引數 buf 字元型指標,指向用來儲存所得資料的位址。bufsize 整型資料,指明儲存資料的大小。stream 檔案結構體指標,將要讀取的檔案流。返回...
fgets與gets比較分析
函式名 fgets 功能 從流中讀取乙個字串 用法 char fgets char string,int n,file stream 形參注釋 函式說明 fgets 用來從引數stream所指的檔案內讀入字元並存到引數s所指的記憶體空間,直到出現換行字元 讀到檔案尾或是已讀了size 1個字元為止,...