c語言操作文本的基本使用方法
字符讀寫函數(shù) :fgetc和fputc
字符串讀寫函數(shù):fgets和fputs
數(shù)據(jù)塊讀寫函數(shù):freed和fwrite
格式化讀寫函數(shù):fscanf和fprinf
1.字符讀寫:
fgetc函數(shù)的功能是從指定的文件中讀一個(gè)字符,函數(shù)調(diào)用的形式為:
字符變量=fgetc(文件指針);
fputc函數(shù)的功能是把一個(gè)字符寫入指定的文件中,函數(shù)調(diào)用的形式為:
fputc(字符量,文件指針);
2.字符串讀寫
讀字符串函數(shù)fgets
函數(shù)的功能是從指定的文件中讀一個(gè)字符串到字符數(shù)組中,函數(shù)調(diào)用的形式為:
fgets(字符數(shù)組名,n,文件指針);
寫字符串函數(shù)fputs
fputs函數(shù)的功能是向指定的文件寫入一個(gè)字符串,其調(diào)用形式為:
fputs(字符串,文件指針);
3.數(shù)據(jù)塊讀寫
讀數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:
fread(buffer,size,count,fp);
寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:
fwrite(buffer,size,count,fp);
4.格式化讀寫
fscanf函數(shù),fprintf函數(shù)與前面使用的scanf和printf函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩者的區(qū)別在于fscanf函數(shù)和fprintf函數(shù)的讀寫對(duì)象不是鍵盤和顯示器,而是磁盤文件。
這兩個(gè)函數(shù)的調(diào)用格式為:
fscanf(文件指針,格式字符串,輸入表列);
fprintf(文件指針,格式字符串,輸出表列);
文件定位
移動(dòng)文件內(nèi)部位置指針的函數(shù)主要有兩個(gè),即rewind函數(shù)和fseek函數(shù)。
rewind函數(shù)前面已多次使用過,其調(diào)用形式為:
rewind(文件指針);
它的功能是把文件內(nèi)部的位置指針移到文件首。
下面主要介紹fseek函數(shù)。fseek函數(shù)用來移動(dòng)文件內(nèi)部位置指針,其調(diào)用形式為:
fseek(文件指針,位移量,起始點(diǎn));
其中:
“文件指針”指向被移動(dòng)的文件。
“位移量”表示移動(dòng)的字節(jié)數(shù),要求位移量是long型數(shù)據(jù),以便在文件長(zhǎng)度大于64KB時(shí)不會(huì)出錯(cuò)。當(dāng)用常量表示位移量時(shí),要求加后綴“L”。
“起始點(diǎn)”表示從何處開始計(jì)算位移量,規(guī)定的起始點(diǎn)有三種:文件首,當(dāng)前位置和文件尾。其表示方法如下表。
起始點(diǎn) 表示符號(hào) 數(shù)字表示
文件首 SEEK_SET 0
當(dāng)前位置 SEEK_CUR 1
文件末尾 SEEK_END 2
例如:
fseek(fp,100L,0);
其意義是把位置指針移到離文件首100個(gè)字節(jié)處。
還要說明的是fseek函數(shù)一般用于二進(jìn)制文件。在文本文件中由于要進(jìn)行轉(zhuǎn)換,故往往計(jì)算的位置會(huì)出現(xiàn)錯(cuò)誤。
c語言中常用的文件檢測(cè)函數(shù)有以下幾個(gè)。
文件結(jié)束檢測(cè)函數(shù)feof函數(shù)
調(diào)用格式:
feof(文件指針);
功能:判斷文件是否處于文件結(jié)束位置,如文件結(jié)束,則返回值為1,否則為0。
讀寫文件出錯(cuò)檢測(cè)函數(shù)
ferror函數(shù)調(diào)用格式:
ferror(文件指針);
功能:檢查文件在用各種輸入輸出函數(shù)進(jìn)行讀寫時(shí)是否出錯(cuò)。如ferror返回值為0表示未出錯(cuò),否則表示有錯(cuò)。
文件出錯(cuò)標(biāo)志和文件結(jié)束標(biāo)志置0函數(shù)
clearerr函數(shù)調(diào)用格式:
clearerr(文件指針);
功能:本函數(shù)用于清除出錯(cuò)標(biāo)志和文件結(jié)束標(biāo)志,使它們?yōu)?值。
相關(guān)文章
C++ Boost Random隨機(jī)函數(shù)詳解
Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱2022-11-11C++11 std::shared_ptr總結(jié)與使用示例代碼詳解
這篇文章主要介紹了C++11 std::shared_ptr總結(jié)與使用,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06C++ Opencv自寫函數(shù)實(shí)現(xiàn)膨脹腐蝕處理技巧
這篇文章主要介紹了C++ Opencv 自寫函數(shù)實(shí)現(xiàn)膨脹腐蝕處理,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10C語言單鏈隊(duì)列的表示與實(shí)現(xiàn)實(shí)例詳解
這篇文章主要介紹了C語言單鏈隊(duì)列的表示與實(shí)現(xiàn),對(duì)于研究數(shù)據(jù)結(jié)構(gòu)與算法的朋友來說很有參考借鑒價(jià)值,需要的朋友可以參考下2014-07-07C語言文件操作實(shí)現(xiàn)數(shù)據(jù)持久化(幫你快速了解文件操作函數(shù))
持久數(shù)據(jù)其實(shí)就是將數(shù)據(jù)保存到數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于C語言文件操作實(shí)現(xiàn)數(shù)據(jù)持久化(幫你快速了解文件操作函數(shù))的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11