1樓:帥文玉告水
哦這裡是特殊情況。
initial這個陣列長度只有2,
讀進來乙個資料就滿了(因為第二個位置要寫0呢。
所以後面的回車沒被讀進來,因為緩衝區滿了。
2樓:勞秀芳冷衣
從流中讀一行或指定個字元,
原型是char*fgets(char*s,intn,file*stream);
從流中讀取n-1個字元,除非讀完一行,引數s是來接收字串,如果成功則返回s的指標,否則返回null。
形參注釋:*string結果資料的首位址;n-1:一次讀入資料塊的長度,其預設值為1k,即1024;stream檔案指標
fgets的返回值是個指標,*fgets(buffer,100,stdin)就是取返回指標所指向位址的第乙個字元,fgets的返回值是char*.要是輸入一串字元,返回的第一字元一定不是\n如果要是乙個空行,第乙個一定是\n,所以會推出迴圈,如果while中的兩個條件都滿足,就會進入迴圈繼續計算
3樓:乜耕順牟媚
函式的功能是從指定的檔案中讀乙個字串到字元陣列中,函式呼叫的形式為:
fgets(字元陣列名,n,檔案指標);
其中的n是乙個正整數。表示從檔案中讀出的字串不超過n-1個字元。在讀入的最後乙個字元後加上串結束標誌'\0'。
1)在讀出n-1個字元之前,如遇到了換行符或eof,則讀出結束。
2)fgets函式也有返回值,其返回值是字元陣列的首位址。
4樓:戎義須辰
fgets()函式用於從檔案流中讀取一行或指定個數的字元,其原型為:
char
*fgets(char
*string,
intsize,
file
*stream);
引數說明:
string為乙個字元陣列,用來儲存讀取到的字元。
size為要讀取的字元的個數。如果該行字元數大於size-1,則讀到size-1
個字元時結束,並在最後補充'
\0';如果該行字元數小於等於
size-1,則讀取所有字元,並在最後補充'\0'。即,每次最多讀取
size-1
個字元。
stream為檔案流指標。
【返回值】讀取成功,返回讀取到的字串,即string;失敗或讀到檔案結尾返回null。因此我們不能直接通過fgets()的返回值來判斷函式是否是出錯而終止的,應該借助feof()函式或者ferror()函式來判斷。
注意:fgets()與gets()不一樣,不僅僅是因為gets()函式只有乙個引數
file
*stream,更重要的是,fgets()可以指定最大讀取的字串的個數,杜絕了gets()使用不當造成快取溢位的問題。
c語言中函式指標用法,C語言中函式指標用法
函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...
c語言中的strlen函式,C語言中的strlen函式
冰 vs 霰 strlen是測量字串長度的 char d 和char a china char b 是等價的 是陣列的表示形式 而char c 卻是字元陣列所以並不能得到結果 strlen函式測量字串中字元個數,不包括結尾的 0 字元,你的 char c沒有結尾的 0 不是合法的字串,所以結果不對 ...
C語言中的sprint函式問題,C語言中迴圈問題
好程式設計師 sprintf函式原型為 int sprintf char str,const char format,作用是格式化字串,具體功能如下所示 1 將數字變數轉換為字串。2 得到整型變數的16進位制和8進位制字串。3 連線多個字串。舉例如下所示 1 char str 256 2 int d...