c語言操作文本應(yīng)該怎么使用,這對(duì)于很多新手來說,是很難的一件事情,下面我為大家?guī)砹岁P(guān)于c語言操作文本的基本使用方法,歡迎大家閱讀!
成都創(chuàng)新互聯(lián)是一家企業(yè)級(jí)云計(jì)算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營經(jīng)驗(yàn)。主營GPU顯卡服務(wù)器,站群服務(wù)器,成都天府聯(lián)通服務(wù)器托管,海外高防服務(wù)器,大帶寬服務(wù)器,動(dòng)態(tài)撥號(hào)VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。
c語言操作文本的基本使用方法
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ù),以便在文件長度大于64KB時(shí)不會(huì)出錯(cuò)。當(dāng)用常量表示位移量時(shí),要求加后綴“L”。
“起始點(diǎn)”表示從何處開始計(jì)算位移量,規(guī)定的起始點(diǎn)有三種:文件首,當(dāng)前位置和文件尾。其表示方法如下表。
c語言操作文本的基本使用方法1
起始點(diǎn)表示符號(hào)數(shù)字表示
文件首SEEK_SET0
當(dāng)前位置SEEK_CUR1
文件末尾SEEK_END2
例如:
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)?值。
rewind函數(shù)
作用:將文件內(nèi)部的位置指針重新指向一個(gè)流(數(shù)據(jù)流/文件)的開頭。
用 法: void rewind(FILE *stream);
注意:不是文件指針而是文件內(nèi)部的位置指針,隨著對(duì)文件的讀寫文件的位置指針(指向當(dāng)前讀寫字節(jié))向后移動(dòng)。而文件指針是指向整個(gè)文件,如果不重新賦值文件指針不會(huì)改變。
rewind函數(shù)作用等同于 (void)fseek(stream, 0L, SEEK_SET);[1]
頭文件: stdio.h
返回值:無
程序示例:
#include stdio.h
#include dir.h
int main(void)
{
FILE *fp;
char fname[10] = "TXXXXXX", *newname, first;
newname = mktemp(fname);
fp = fopen(newname,"w+");
if(NULL==fp)
return 1;
fprintf(fp,"abcdefghijklmnopqrstuvwxyz");
rewind(fp);
fscanf(fp,"%c",first);
printf("The first character is: %c\n",first);
fclose(fp);
remove(newname);
return 0;
}
循環(huán)讀取一個(gè)文件的內(nèi)容。
這樣做沒有任何意義,不如把讀取的內(nèi)容保持在變量當(dāng)中,節(jié)省空間時(shí)間。如果非要反復(fù)讀取的話可以使用rewind函數(shù)把文件指針重置。
函數(shù)名: rewind()
功 能: 將文件內(nèi)部的位置指針重新指向一個(gè)流(數(shù)據(jù)流/文件)的開頭
注意:不是文件指針而是文件內(nèi)部的位置指針,隨著對(duì)文件的讀寫文件的位置指針(指向當(dāng)前讀寫字節(jié))向后移動(dòng)。而文件指針是指向整個(gè)文件,如果不重新賦值文件指針不會(huì)改變。rewind函數(shù)作用等同于 (void)fseek(stream, 0L, SEEK_SET);
循環(huán)讀取多個(gè)文件的內(nèi)容。
把多個(gè)文件名存在一個(gè)字符串?dāng)?shù)組當(dāng)中。使用循環(huán)語句反復(fù)打開-讀取-關(guān)閉即可。
例如:
char?*?s[3]={"文件一","文件二","文件三"};
for(i=0;i3;i++){
f=fopen(s[i]);?//打開第i個(gè)文件
//讀取數(shù)據(jù)
fclose(f);//關(guān)閉文件
}