『壹』 c語言中的fgets函數。


這里是特殊情況。
initial這個數組長度只有2,
讀進來一個數據就滿了(因為第二個位置要寫0呢。
所以後面的回車沒被讀進來,因為緩沖區滿了。

『貳』 c語言中fgets的返回值類型

1、如果成功,該函數返回相同的 str 參數。如果到達文件末尾或者沒有讀取到任何字元,str 的內容保持不變,並返回一個空指針。如果發生錯誤,返回一個空指針。

在讀字元時遇到end-of-file,則eof指示器被設置,如果還沒讀入任何字元就遇到這種情況,則stream保持原來的內容,返回NULL;

2、如果發生讀入錯誤,error指示器被設置,返回NULL,stream的值可能被改變。

如果文件中的該行,不足n-1個字元,則讀完該行就結束。如若該行(包括最後一個換行符)的字元數超過n-1,則fgets只返回一個不完整的行,但是,緩沖區總是以NULL字元結尾,對fgets的下一次調用會繼續讀該行。

函數成功將返回stream,失敗或讀到文件結尾返回NULL。因此不能直接通過fgets的返回值來判斷函數是否是出錯而終止的,應該藉助feof函數或者ferror函數來判斷。

(2)c語言fgets函數擴展閱讀

函數使用:

1、同時可以用作鍵盤輸入:fgets(key,n,stdin)且還必須:key[strlen(key)]=''或者key[n-1]=''

2、還有種程序經常使用的方法:key[strlen(key-1)]=0x00;

3、與gets相比使用這個好處是:讀取指定大小的數據,避免gets函數從stdin接收字元串而不檢查它所復制的緩存的容積導致的緩存溢出問題。

『叄』 c語言中fgets操作方法,求一簡單程序示範

從流中讀一行或指定個字元, 原型是char *fgets(char *s, int n, FILE *stream); 從流中讀取n-1個字元,除非讀完一行,參數s是來接收字元串,如果成功則返回s的指針,否則返回NULL。 形參注釋:*s結果數據的首地址;n-1:一次讀入數據塊的長度,其默認值為1k,即1024;stream文件指針
fgets函數用來從文件中讀入字元串。fgets函數的調用形式如下:fgets(str,n,fp);此處,fp是文件指針;str是存放在字元串的起始地址;n是一個int類型變數。函數的功能是從fp所指文件中讀入n-1個字元放入str為起始地址的空間內;如果在未讀滿n-1個字元之時,已讀到一個換行符或一個EOF(文件結束標志),則結束本次讀操作,讀入的字元串中最後包含讀到的換行符。因此,確切地說,調用fgets函數時,最多隻能讀入n-1個字元。讀入結束後,系統將自動在最後加'\0',並以str作為函數值返回。

『肆』 C語言文件操作中fgets函數的使用

#include<stdio.h>
#include<string.h>

//#pragmawarning(disable:4996)
constintMAXLEN=1000;

intmain(){
chars[MAXLEN];//={0};
//memset(s,0,sizeof(s));//s要被多次使用的
FILE*p=fopen("E:\輸入信息得文本.txt","w");
if(p==NULL){
printf("不能打開文件。 ");
return1;
}
while(1){
//gets(s);
fgets(s,MAXLEN,stdin);
//fgtes()函數讀取的串中通常含有' '
intlen=strlen(s);
if(s[len-1]==' ')s[len-1]='';
if(strcmp(s,"exit")==0)break;
fprintf(p,"%s ",s);
}
fclose(p);
printf("end ");
return0;
}

『伍』 C語言 fgets()函數

函數的功能是從指定的文件中讀一個字元串到字元數組中,函數調用的形式為:
fgets(字元數組名,n,文件指針);
其中的n是一個正整數。表示從文件中讀出的字元串不超過
n-1個字元。在讀入的最後一個字元後加上串結束標志'\0'。
1)
在讀出n-1個字元之前,如遇到了換行符或eof,則讀出結束。
2)
fgets函數也有返回值,其返回值是字元數組的首地址。

『陸』 C語言里fgets函數怎麼用

fgets(由文件中讀取一字元串)
表頭文件
include<stdio.h>
定義函數
char * fgets(char * s,int size,FILE * stream);
函數說明
fgets()用來從參數stream所指的文件內讀入字元並存到參數s所指的內存空間,直到出現換行字元、讀到文件尾或是已讀了size-1個字元為止,最後會加上NULL作為字元串結束。
返回值
gets()若成功則返回s指針,返回NULL則表示有錯誤發生。
範例
#include<stdio.h>
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
執行
this is a test /*輸入*/
this is a test /*輸出*/

『柒』 求教c語言中fgets的用法

從流中讀一行或指定個字元,原型是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*.要是輸入一串字元,返回的第一字元一定不是 如果要是一個空行,第一個一定是 ,所以會推出循環,如果while中的兩個條件都滿足,就會進入循環繼續計算。

(7)c語言fgets函數擴展閱讀:

一、函數原型是:char *fgets(char *s, int n, FILE *stream);

從文件結構體指針stream中讀取數據,每次讀取一行。讀取的數據保存在buf指向的字元數組中,每次最多讀取bufsize-1個字元(第bufsize個字元賦''),如果文件中的該行,不足bufsize-1個字元,則讀完該行就結束。

如若該行(包括最後一個換行符)的字元數超過bufsize-1,則fgets只返回一個不完整的行,但是,緩沖區總是以NULL字元結尾,對fgets的下一次調用會繼續讀該行。

函數成功將返回buf,失敗或讀到文件結尾返回NULL。因此我們不能直接通過fgets的返回值來判斷函數是否是出錯而終止的,應該藉助feof函數或者ferror函數來判斷。

二、與gets相比使用這個好處是:讀取指定大小的數據,避免gets函數從stdin接收字元串而不檢查它所復制的緩存的容積導致的緩存溢出問題。

三、功能:

1、《UNIX 環境高級編程》中指出,每次調用fgets函數會造成標准輸出設備自動刷清!案例詳見《UNIX環境高級編程(第二版)》中程序清單1-5和課後習題5.7,習題5.7的答案中給出了相關的論述。

2、初入門者,大多數是在WINDOWS下,使用VS進行練習的。此環境下,對注意1中的情況進行測試,並不能看到案例中所描述的情景,因為具體的實現不同。

stream文件流指針體指向文件內容地址的偏移原則

例:

如果一個文件的當前位置的文本如下

Love, I Have

Since you can do it.

如果用fgets(str1,6,file1);去讀取

則執行後str1 = "Love," ,讀取了6-1=5個字元

這個時候再執行fgets(str1,20,file1)則執行後str1 = " I Have "

而如果

fgets(str1,23,file1);

則執行str1="Love ,I Have",讀取了一行(包括行尾的' ',並自動加上字元串結束符''),當前文件位置移至下一行,雖然23大於當前行上字元總和,可是不會繼續到下一行。而下一次調用fgets()繼續讀取的時候是從下一行開始讀。

『捌』 C語言關於fgets()

fgets返回有兩種情況,一種是成功的讀到了一整行。另一種是讀取的字元數達到了第二個參數的值,這里就是n。
如果是第一種情況,那會包含\n,也就是find的情況,把\n替換成\0.
如果是第二種情況,就不會有\n,表示沒有讀完。後續的while把這一行的剩餘數據讀走,並拋棄。

『玖』 C語言 怎麼用fgets()讀取一個txt文件中的任意行的信息

如果使用fgets()讀取某個文件抄,第一次讀取的bufsize為5,而文件的第一行有10個字元(算上』\n』),那麼讀取文件的指針會偏移至當前讀取完的這個字元之後的位置。也就是第二次再用fgets()讀取文件的時候,則會繼續讀取其後的字元。
如果使用fgets() 讀取文件的時候bufsize大於該行的字元總數加2(多出來的兩個,一個保存文件本身的』\n』換行,一個保存字元串本身的結束標識』\0』),文件並不會繼續讀下去,僅僅只是這一行讀取完,隨後指向文件的指針會自動偏移至下一行。