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 是字元型指標,指向儲存讀入資料的緩衝區的位...