C語言中fgets和fscanf區(qū)別詳解
C語言中fgets和fscanf區(qū)別詳解
一、作用上的大概區(qū)別:
①fgets:從文件中讀取一行數(shù)據(jù)存入緩沖區(qū)(fgets遇到回車才會結束,不對空格和回車做任何轉(zhuǎn)換就錄入到緩沖區(qū),結束后再往緩沖區(qū)寫多一個\0,所以它是讀一行數(shù)據(jù)) ②fscanf:從文件中讀取一段數(shù)據(jù)存入緩沖區(qū)(fscanf遇到空格或回車就結束,它會把空格或回車轉(zhuǎn)換為\0,所以它是讀一小段數(shù)據(jù))
二、舉個例子:把a.txt文件中的內(nèi)容復制到b.txt。
a.txt中的內(nèi)容(第一行中“我愛你小白”和“開玩笑”中間有個空格,每行的最后都有回車):
我愛你小白 開玩笑 哈哈 開玩笑
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)//如果文件不存在,直接結束 { return 0; } char buf[1024] = { 0 };//緩沖區(qū) while (!feof(f1)) { memset(buf, 0, sizeof(buf));//清空緩沖區(qū) fgets(buf, sizeof(buf), f1);//從文件中讀取一行數(shù)據(jù)存入緩沖區(qū)(fgets遇到回車才會結束,不對空格和回車做任何轉(zhuǎn)換就錄入到緩沖區(qū),結束后再往緩沖區(qū)寫多一個\0,所以它是讀一行數(shù)據(jù)) fputs(buf, f2); } 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)//如果文件不存在,直接結束 { return 0; } char buf[1024] = { 0 };//緩沖區(qū) while (!feof(f1)) { memset(buf, 0, sizeof(buf));//清空緩沖區(qū) fscanf(f1, "%s", buf);//從文件中讀取一段數(shù)據(jù)存入緩沖區(qū)(fscanf遇到空格或回車就結束,它會把空格或回車轉(zhuǎn)換為\0,所以它是讀一小段數(shù)據(jù)) fputs(buf, f2); } fclose(f1);//注意最后關閉文件 fclose(f2);//注意最后關閉文件
運行結果:
三、結論
1、fgets遇到“空格”就跟遇到平常的字符一樣讀取,遇到“回車”則結束本次讀取,最后往緩沖區(qū)(char *buf[])的最后加多一個"\0"表示本次讀取一行結束。 2、fscanf不論遇到“空格”還是“回車”,都當作'\0'讀取到緩沖區(qū)中(char *buf[]),并結束本次讀取。
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
上一篇:C語言數(shù)據(jù)結構之動態(tài)分配實現(xiàn)串
欄 目:C語言
下一篇:C語言數(shù)據(jù)結構中定位函數(shù)Index的使用方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1071.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10delphi制作wav文件的方法
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實例總結