當前位置:首頁 » 編程語言 » c語言fgets函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言fgets函數

發布時間: 2022-02-25 20:54:11

c語言 fgets()函數

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

㈡ C語言文件習題:在C語言中,函數fgets(str,n,fp)的功能是_________。

選擇D.從文件fp中讀取長度不超過n-1的字元串,存入str指向的內存空間。

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 <string.h>
#include <stdio.h>
int main(void)
{
FILE *stream;
char string[] = "This is a test";
char msg[20]; /* open a file for update */
stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */
fwrite(string, strlen(string), 1, stream); /* seek to the start of the file */
fseek(stream, 0, SEEK_SET); /* read a string from the file */
fgets(msg, strlen(string)+1, stream); /* display the string */
printf("%s", msg);
fclose(stream);
return 0;
}
fgets函數用來從文件中讀入字元串。fgets函數的調用形式如下:fgets(str,n,fp);此處,fp是文件指針;str是存放在字元串的起始地址;n是一個int類型變數。函數的功能是從fp所指文件中讀入n-1個字元放入str為起始地址的空間內;如果在未讀滿n-1個字元之時,已讀到一個換行符或一個EOF(文件結束標志),則結束本次讀操作,讀入的字元串中最後包含讀到的換行符。因此,確切地說,調用fgets函數時,最多隻能讀入n-1個字元。讀入結束後,系統將自動在最後加'\0',並以str作為函數值返回。

㈣ 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的返回值類型

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函數來判斷。

(5)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()

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

㈦ 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函數原型如下:
char *fgets(char *s,int n,FILE *stream);
它一次從文件中讀取一行,包括換行符,放入字元串s中,並且加上字元串結束標志符'\0'。參數n代表緩沖區s中最多能容納多少個字元(不算結尾標志符'\0')。
fgets函數返回一個char類型的指針,和s指向同一個地方。如果在沒有數據可以讀取,那麼函數就返回NULL。
----------------------------------------------------------------------------------------------------------------------
下面的程序將文本文件students.txt的內容依次讀到字元串s中輸出
#include<stdio.h>
#include<stdlib.h>
#define MAX 200
int main()
{
FILE *fpSrc;
char szLine[MAX];
fpSrc=fopen("students.txt","r");
//文件要指明路徑
if(NULL==fpSrc)
{
printf("文件讀取失敗!");
exit(1);
}
while(fgets(szLine,MAX-1,fpSrc))//從文件中讀取一行寫入到字元串szLine中,直到fgets函數返回NULL
printf("%s\n",szLine);//列印出讀取的內容
fclose(fpSrc);//關閉文件流
return 0;
}

㈨ 求教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中的兩個條件都滿足,就會進入循環繼續計算。

(9)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()函數用於從文件流中讀取一行或指定個數的字元,其原型為:
char * fgets(char * string, int size, 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()使用不當造成緩存溢出的問題。