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ù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。
這兩個(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ù),以便在文件長度大于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語言中常用的文件檢測函數(shù)有以下幾個(gè)。
文件結(jié)束檢測函數(shù)feof函數(shù)
調(diào)用格式:
feof(文件指針);
功能:判斷文件是否處于文件結(jié)束位置,如文件結(jié)束,則返回值為1,否則為0。
讀寫文件出錯(cuò)檢測函數(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++ sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作
這篇文章主要介紹了c++ sqlite3如何利用事務(wù)(BEGIN;COMMIT;)批量操作,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
C語言中查詢進(jìn)程信號(hào)是否被遮罩或擱置的簡單方法
這篇文章主要介紹了C語言中查詢進(jìn)程信號(hào)是否被遮罩或擱置的簡單方法,包括sigprocmask函數(shù)和sigpending函數(shù)的簡介,需要的朋友可以參考下2015-09-09
C++?ffmpeg實(shí)現(xiàn)將視頻幀轉(zhuǎn)換成jpg或png等圖片
有時(shí)播放實(shí)時(shí)流的時(shí)候有截圖的需求,需要將解碼出來的圖片保存本地或上傳服務(wù)器,這時(shí)就需要將avframe中的數(shù)據(jù)編碼成png、jpg等格式的圖片,我們使用ffmpeg的相關(guān)編碼器就可以實(shí)現(xiàn)功能,下面就來講講具體實(shí)現(xiàn)方法吧2023-03-03
C語言實(shí)現(xiàn)簡單班級(jí)成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單班級(jí)成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03

