C語言中fgets和fscanf區別詳解

2022-10-04 00:30:25 字數 1227 閱讀 5734

c語言中fgets和fscanf區別詳解

一、作用上的大概區別:

①fgets:從檔案中讀取ydklbiid一行資料存入www.cppcns.com緩衝區(fgets遇到回車才會結束,不對空格和回車做任何轉換就錄入到緩衝區,結束後再往緩衝區寫多乙個\0,所以它是讀一行資料)

②fscanf:從檔案中讀取一段資料存入緩衝區(fscanf遇到空格或回車就結束,它會把空格或回車轉換為\0,所以它是讀一小段資料)

二、舉個例子:把a.txt檔案中的內容複製到b.txt。

a.txt中的內容(第一行中「我愛你小白」和「開玩笑」中間有個空格,每行的最後都有回車):

我愛你小白 開玩笑

哈哈開玩笑

1、使用fgets讀取a.txt檔案並寫入到b.txt的程式片段:

file *f1 = fopen("a.txt", "r");//唯讀方式開啟a.txt,該檔案必須存在

file *f2 = fopen("b.txt", "w");//以只寫方式開啟b.txt,該檔案可以不存在

if (f1 == null)//如果檔案不存在,直接結束

char buf[1024] = ;//緩衝區

while (!feof(f1))

fclose(f1);//注意最後關閉檔案

fclose(f2);//注意最後關閉檔案

執行結果:

2、使用fscanf讀取a.txt檔案並寫入到b.txt的程式片段:

file *f1 = fopen("a.txt", "r");//唯讀方式開啟a.txt

file *f2 = fopen("b.txt", "w");//以只寫方式開啟b.txt,該檔案可以不存在

if (f1 == null)//如果檔案不存在,直接結束

char buf[1024] = ;//緩衝區

while (!feof(f1))

fclose(f1);//注意最後關閉檔案

fclose(f2);//注意最後關閉檔案

執行結果:

三、結論

1、fgets遇到「空格」就跟遇到平常的字元一樣讀取,遇到「回車」則結束本次讀取,最後往緩衝區(char *buf)的www.cppcns.com最後加多乙個"\0"表示本次讀取一行結束。

2、fscanf不論遇到「空格」還是「回車」,都當作'\0'讀取到緩衝區中(char *buf),並結束本次讀取。

本文標題: c語言中fgets和fscanf區別詳解

本文位址:

c語言中的fgets函式

char fgets char string,int size,file stream 引數說明 string為乙個字元陣列,用來儲存讀取到的字元。size為要讀取的字元的個數。如果該行字元數大於size 1,則讀到 size 1 個字元時結束,並在最後補充 0 如果該行字元數小於等於 size 1...

c語言中的fgets函式

char fgets char string,int size,file stream 引數說明 string為乙個字元陣列,用來儲存讀取到的字元。size為要讀取的字元的個數。如果該行字元數大於size 1,則讀到 size 1 個字元時結束,並在最後補充 0 如果該行字元數小於等於 size 1...

C 學習筆記 C語言中的fgets()函式

函式原型 char fgets char s,int n,file stream 從 檔案結構體指標stream中讀取 資料,每次讀取一行。讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize 1個字元 第bufsize個字元賦 0 其中 s 是字元型指標,指向儲存讀入資料的緩衝區的位...