真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言文件狀態(tài)檢查函數(shù) c語言程序怎么檢查錯(cuò)誤

如何用C語言監(jiān)視一文件,(可以隔一定時(shí)間檢測(cè)該文件),當(dāng)文件相比較上一時(shí)間有改動(dòng)時(shí),讀出改動(dòng)處

、“網(wǎng)絡(luò)監(jiān)視器”的基本使用

大悟ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

欲打開“網(wǎng)絡(luò)監(jiān)視器”,只需依次選擇“開始→程序→附件→系統(tǒng)工具→網(wǎng)絡(luò)監(jiān)視器”即可進(jìn)入其主窗口。

對(duì)于“網(wǎng)絡(luò)監(jiān)視器”中的功能,既可以選擇菜單中的相應(yīng)項(xiàng)目,也可以通過直接單擊工具欄上的相應(yīng)按鈕來實(shí)現(xiàn)。在其主窗口工具欄上的按鈕,從左到右作用依次為:

1.選擇服務(wù)器:通過它可對(duì)其他計(jì)算機(jī)的“網(wǎng)絡(luò)監(jiān)視器”進(jìn)行遠(yuǎn)程管理。具體的使用方法請(qǐng)參見后文相關(guān)內(nèi)容。

2.?dāng)嚅_用戶連接:通過它可強(qiáng)行中斷列表中指定用戶對(duì)本機(jī)的連接。

3.關(guān)閉文件:通過它可強(qiáng)行關(guān)閉列表中指定用戶所打開的指定共享文件。

4.添加共享:通過它可根據(jù)提示直接添加本機(jī)的共享資源,并為它設(shè)置相應(yīng)權(quán)限。

5.停止共享:通過它可停止列表中指定資源的共享。

6.顯示用戶:這相當(dāng)于選“查看”菜單中的“按連接”項(xiàng),它是“網(wǎng)絡(luò)監(jiān)視器”主窗口的默認(rèn)狀態(tài),也是最常用的窗口。此處可以查看到已連接到本機(jī)的客戶機(jī)的用戶名、計(jì)算機(jī)名、打開了些什么共享資源、打開些什么文件以及連接的時(shí)間和空閑的時(shí)間等資料。當(dāng)客戶機(jī)斷開連接之后它就會(huì)自動(dòng)從此列表中消失。

7.顯示共享的文件夾:這相當(dāng)于選“查看”菜單中的“按共享的文件夾”項(xiàng)。它可以查看本機(jī)已共享的資源及其共享名和權(quán)限;可添加共享,停止共享,修改共享等。

8、顯示文件:這相關(guān)于選“查看”菜單中的“按打開的文件”項(xiàng)。它可以查看已打開的本服務(wù)器文件;可關(guān)閉文件等。

三、“網(wǎng)絡(luò)監(jiān)視器”的遠(yuǎn)程監(jiān)視

本文上面部分已經(jīng)講過“網(wǎng)絡(luò)監(jiān)視器”在本地計(jì)算機(jī)上的基本使用方法,但實(shí)際上在一定條件滿足的情況下,它也可以對(duì)局域網(wǎng)內(nèi)的其他計(jì)算機(jī)進(jìn)行完全相同的遠(yuǎn)程管理。請(qǐng)進(jìn)行如下的操作:

1.啟用遠(yuǎn)程管理

在遠(yuǎn)程計(jì)算機(jī)上,先進(jìn)入其“控制面板→密碼→遠(yuǎn)程管理”窗口,再勾選中“啟用此服務(wù)器的遠(yuǎn)程管理”,接著在相應(yīng)位置輸入密碼后按“確定”按鈕保存退出。

2.使用遠(yuǎn)程管理

在本地計(jì)算機(jī)上,先進(jìn)入“網(wǎng)絡(luò)監(jiān)視器”的主窗口,再選“管理員”菜單中的“選擇服務(wù)器”項(xiàng),在“請(qǐng)輸入要進(jìn)行管理的服務(wù)器名”的提示窗口中的“名稱”處輸入遠(yuǎn)程計(jì)算機(jī)的名字(比如為zhuyan),然后按“確定”按鈕繼續(xù);系統(tǒng)接著會(huì)提示“必須提供密碼才能連接”,則請(qǐng)?jiān)凇懊艽a”后輸入“啟用遠(yuǎn)程管理”一步中所設(shè)的密碼值,最后按“確定”按鈕即可得到新的“網(wǎng)絡(luò)監(jiān)視器”的窗口,里面當(dāng)然是遠(yuǎn)程計(jì)算機(jī)的共享內(nèi)容了,你所要做的,就是進(jìn)行正常操作就可以啦!

注意:

1.如果在“使用遠(yuǎn)程管理”操作中,當(dāng)進(jìn)行到輸入密碼一步勾選中了“請(qǐng)將密碼保存到密碼列表”項(xiàng),則當(dāng)你以后再連接到遠(yuǎn)程計(jì)算機(jī)時(shí)就不用輸入密碼了。

2.如果要想修改共享文件夾名或其權(quán)限設(shè)置,則需要在“顯示共享的文件夾”窗口中,先在列表中選中該用戶,然后按鍵盤上的ALT+ENTER鍵(或者選“管理員”菜單中的“共享文件夾的屬性”項(xiàng)),再根據(jù)提示進(jìn)行操作即可。

C語言中什么函數(shù)可以修改文件內(nèi)容(可以隨意刪除原內(nèi)容的一部分)?

C語言文件操作詳解

C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標(biāo)準(zhǔn)庫函數(shù)來實(shí)現(xiàn)。文件操作標(biāo)準(zhǔn)庫函數(shù)有:

文件的打開操作 fopen 打開一個(gè)文件

文件的關(guān)閉操作 fclose 關(guān)閉一個(gè)文件

文件的讀寫操作 fgetc 從文件中讀取一個(gè)字符

  fputc 寫一個(gè)字符到文件中去

  fgets 從文件中讀取一個(gè)字符串

  fputs 寫一個(gè)字符串到文件中去

  fprintf 往文件中寫格式化數(shù)據(jù)

  fscanf 格式化讀取文件中數(shù)據(jù)

  fread 以二進(jìn)制形式讀取文件中的數(shù)據(jù)

  fwrite 以二進(jìn)制形式寫數(shù)據(jù)到文件中去

  getw 以二進(jìn)制形式讀取一個(gè)整數(shù)

  putw 以二進(jìn)制形式存貯一個(gè)整數(shù)

 文件狀態(tài)檢查函數(shù) feof 文件結(jié)束

  ferror 文件讀/寫出錯(cuò)

  clearerr 清除文件錯(cuò)誤標(biāo)志

  ftell 了解文件指針的當(dāng)前位置

文件定位函數(shù) rewind 反繞

  fseek 隨機(jī)定位

# 文件的打開

 1.函數(shù)原型

FILE *fopen(char *pname,char *mode)

 2.功能說明

按照mode 規(guī)定的方式,打開由pname指定的文件。若找不到由pname指定的相應(yīng)文件,就按以下方式之一處理:

(1) 此時(shí)如mode 規(guī)定按寫方式打開文件,就按由pname指定的名字建立一個(gè)新文件;

(2) 此時(shí)如mode 規(guī)定按讀方式打開文件,就會(huì)產(chǎn)生一個(gè)錯(cuò)誤。

打開文件的作用是:

(1)分配給打開文件一個(gè)FILE 類型的文件結(jié)構(gòu)體變量,并將有關(guān)信息填入文件結(jié)構(gòu)體變量;

(2)開辟一個(gè)緩沖區(qū);

(3)調(diào)用操作系統(tǒng)提供的打開文件或建立新文件功能,打開或建立指定文件;

FILE *:指出fopen是一個(gè)返回文件類型的指針函數(shù);

 3.參數(shù)說明

pname:是一個(gè)字符指針,它將指向要打開或建立的文件的文件名字符串。

mode:是一個(gè)指向文件處理方式字符串的字符指針。所有可能的文件處理方式見表8.1

 4.返回值

 正常返回:被打開文件的文件指針。

 異常返回:NULL,表示打開操作不成功。

例如:

//定義一個(gè)名叫fp文件指針

FILE *fp;

//判斷按讀方式打開一個(gè)名叫test的文件是否失敗

if((fp=fopen("test","r")) == NULL)//打開操作不成功

{

printf("The file can not be opened.\n");  

exit(1);//結(jié)束程序的執(zhí)行

}

 要說明的是:C語言將計(jì)算機(jī)的輸入輸出設(shè)備都看作是文件。例如,鍵盤文件、屏幕文件等。ANSI C標(biāo)準(zhǔn)規(guī)定,在執(zhí)行程序時(shí)系統(tǒng)先自動(dòng)打開鍵盤、屏幕、錯(cuò)誤三個(gè)文件。這三個(gè)文件的文件指針分別是:標(biāo)準(zhǔn)輸入stdin、標(biāo)準(zhǔn)輸出stdout和標(biāo)準(zhǔn)出錯(cuò) stderr。

* 文件的關(guān)閉

1. 函數(shù)原型

int fclose(FILE *fp);

2. 功能說明

關(guān)閉由fp指出的文件。此時(shí)調(diào)用操作系統(tǒng)提供的文件關(guān)閉功能,關(guān)閉由fp-fd指出的文件;釋放由fp指出的文件類型結(jié)構(gòu)體變量;返回操作結(jié)果,即0或EOF。

3. 參數(shù)說明

fp:一個(gè)已打開文件的文件指針。

4. 返回值

正常返回:0。

異常返回:EOF,表示文件在關(guān)閉時(shí)發(fā)生錯(cuò)誤。

例如:

int n=fclose(fp);

*文件的讀寫操作

A. 從文件中讀取一個(gè)字符

1. 函數(shù)原型

int fgetc(FILE *fp);

2. 功能說明

從fp所指文件中讀取一個(gè)字符。

3. 參數(shù)說明

fp:這是個(gè)文件指針,它指出要從中讀取字符的文件。

4. 返回值

正常返回: 返回讀取字符的代碼。

非正常返回:返回EOF。例如,要從"寫打開"文件中讀取一個(gè)字符時(shí),會(huì)發(fā)生錯(cuò)誤而返回一個(gè)EOF。

5. 實(shí)例

【例】顯示指定文件的內(nèi)容。

//程序名為:display.c

//執(zhí)行時(shí)可用:display filename1 形式的命令行運(yùn)行。顯示文件filename1中的內(nèi)容。例如,執(zhí)行命令行display display.c將在屏幕上顯示display的原代碼。

//File display program.

#include stdio.h

void main(int argc,char *argv[]) //命令行參數(shù)

{

int ch;//定義文件類型指針

FILE *fp;//判斷命令行是否正確

if(argc!=2)

{

printf("Error format,Usage: display filename1\n");

return; //鍵入了錯(cuò)誤的命令行,結(jié)束程序的執(zhí)行

}

//按讀方式打開由argv[1]指出的文件

if((fp=fopen(argv[1],"r"))==NULL)

{

printf("The file %s can not be opened.\n",argv[1]);//打開操作不成功

return;//結(jié)束程序的執(zhí)行

}

//成功打開了argv[1]所指文件

ch=fgetc(fp); //從fp所指文件的當(dāng)前指針位置讀取一個(gè)字符

while(ch!=EOF) //判斷剛讀取的字符是否是文件結(jié)束符

{

putchar(ch); //若不是結(jié)束符,將它輸出到屏幕上顯示

ch=fgetc(fp); //繼續(xù)從fp所指文件中讀取下一個(gè)字符

} //完成將fp所指文件的內(nèi)容輸出到屏幕上顯示

fclose(fp); //關(guān)閉fp所指文件

}

B. 寫一個(gè)字符到文件中去

1. 函數(shù)原型

int fputc(int ch,FILE *fp)

2. 功能說明

把ch中的字符寫入由fp指出的文件中去。

3. 參數(shù)說明

ch:是一個(gè)整型變量,內(nèi)存要寫到文件中的字符(C語言中整型量和字符量可以通用)。

fp:這是個(gè)文件指針,指出要在其中寫入字符的文件。

4. 返回值

正常返回: 要寫入字符的代碼。

非正常返回:返回EOF。例如,要往"讀打開"文件中寫一個(gè)字符時(shí),會(huì)發(fā)生錯(cuò)誤而返回一個(gè)EOF。

5. 實(shí)例

【例】將一個(gè)文件的內(nèi)容復(fù)制到另一個(gè)文件中去。

//程序名為:copyfile.c

//執(zhí)行時(shí)可用:copyfile filename1 filename2形式的命令行運(yùn)行,將文件filename1中的內(nèi)容復(fù)制到文件filename2中去。

//file copy program.

#include stdio.h

void main(int argc,char *argv[]) //命令行參數(shù)

{

int ch;

FILE *in,*out; //定義in和out兩個(gè)文件類型指針

if(argc!=3) //判斷命令行是否正確

{

printf("Error in format,Usage: copyfile filename1 filename2\n");

return; //命令行錯(cuò),結(jié)束程序的執(zhí)行

}

//按讀方式打開由argv[1]指出的文件

if((in=fopen(argv[1],"r"))==NULL)

{

printf("The file %s can not be opened.\n",argv[1]);

return; //打開失敗,結(jié)束程序的執(zhí)行

}

//成功打開了argv[1]所指文件,再

//按寫方式打開由argv[2]指出的文件

if((out=fopen(argv[2],"w"))==NULL)

{

printf("The file %s can not be opened.\n",argv[2]);

return; //打開失敗,結(jié)束程序的執(zhí)行

}

//成功打開了argv[2]所指文件

ch=fgetc(in); //從in所指文件的當(dāng)前指針位置讀取一個(gè)字符

while(ch!=EOF) //判斷剛讀取的字符是否是文件結(jié)束符

{

fputc(ch,out); //若不是結(jié)束符,將它寫入out所指文件

ch=fgetc(in); //繼續(xù)從in所指文件中讀取下一個(gè)字符

} //完成將in所指文件的內(nèi)容寫入(復(fù)制)到out所指文件中

fclose(in); //關(guān)閉in所指文件

fclose(out); //關(guān)閉out所指文件

}

【例】按十進(jìn)制和字符顯示文件代碼,若遇不可示字符就用井號(hào)"#"字符代替之。

//程序名為:dumpf.c

//執(zhí)行時(shí)可用:dumpf filename1 形式的命令行運(yùn)行。

// File dump program.

#include stdio.h

void main(int argc,char *argv[])

{

char str[9];

int ch,count,i;

FILE *fp;

if(argc!=2)

{

printf("Error format,Usage: dumpf filename\n");

return;

}

if((fp=fopen(argv[1],"r"))==NULL)

{

printf("The file %s can not be opened.\n",argv[1]);

return;

}

count=0;

do{

i=0;

//按八進(jìn)制輸出第一列,作為一行八個(gè)字節(jié)的首地址

printf("%06o: ",count*8);

do{

// 從打開的文件中讀取一個(gè)字符

ch=fgetc(fp);

// 按十進(jìn)制方式輸出這個(gè)字符的ASCII碼

printf("%4d",ch);

// 如果是不可示字符就用"#"字符代替

if(ch' '||ch'~') str[i]='#';

// 如果是可示字符,就將它存入數(shù)組str以便形成字符串

else str[i]=ch;

// 保證每一行輸出八個(gè)字符

if(++i==8) break;

}while(ch!=EOF); // 遇到文件尾標(biāo)志,結(jié)束讀文件操作

str[i]='\0'; // 在數(shù)組str加字符串結(jié)束標(biāo)志

for(;i8;i++) printf(" "); // 一行不足八個(gè)字符用空格填充

printf(" %s\n",str); // 輸出字符串

count++; // 準(zhǔn)備輸出下一行

}while(ch!=EOF); // 直到文件結(jié)束

fclose(fp); // 關(guān)閉fp所指文件

}

C. 從文件中讀取一個(gè)字符串

1. 函數(shù)原型

char *fgets(char *str,int n,FILE *fp)

2. 功能說明

從由fp指出的文件中讀取n-1個(gè)字符,并把它們存放到由str指出的字符數(shù)組中去,最后加上一個(gè)字符串結(jié)束符'\0'。

3. 參數(shù)說明

str:接收字符串的內(nèi)存地址,可以是數(shù)組名,也可以是指針。

n: 指出要讀取字符的個(gè)數(shù)。

fp:這是個(gè)文件指針,指出要從中讀取字符的文件。

4. 返回值

正常返回:返回字符串的內(nèi)存首地址,即str的值。

非正常返回:返回一個(gè)NULL值,此時(shí)應(yīng)當(dāng)用feof()或ferror()函數(shù)來判別是讀取到了文件尾,還是發(fā)生了錯(cuò)誤。例如,要從"寫打開"文件中讀取字符串,將

發(fā)生錯(cuò)誤而返回一個(gè)NULL值。

D. 寫一個(gè)字符串到文件中去

1. 函數(shù)原型

int fputs(char *str,FILE *fp)

2. 功能說明

把由str指出的字符串寫入到fp所指的文件中去。

3. 參數(shù)說明

str:指出要寫到文件中去的字符串。

fp:這是個(gè)文件指針,指出字符串要寫入其中的文件。

4. 返回值

正常返回: 寫入文件的字符個(gè)數(shù),即字符串的長(zhǎng)度。

非正常返回:返回一個(gè)NULL值,此時(shí)應(yīng)當(dāng)用feof()或ferror()函數(shù)來判別是讀取到了文件尾,還是發(fā)生了錯(cuò)誤。例如,要往一個(gè)"讀打開" 文件中寫字符串時(shí),

會(huì)發(fā)生錯(cuò)誤而返回一個(gè)NULL值。

5.實(shí)例

【例】以下程序?qū)⒁粋€(gè)文件的內(nèi)容附加到另一個(gè)文件中去。

//程序名:linkfile.c

//執(zhí)行時(shí)可用:linkfile filename1 filename2形式的命令行運(yùn)行,將文件filename2的內(nèi)容附加在文件filename1之后。

// file linked program.

#include stdio.h

#define SIZE 512

void main(int argc,char *argv[])

{

char buffer[SIZE];

FILE *fp1,*fp2;

if(argc!=3)

{

printf("Usage: linkfile filename1 filename2\n");

return;

}

// 按追加方式打開argv[1] 所指文件

if((fp1=fopen(argv[1],"a"))==NULL)

{

printf("The file %s can not be opened.\n",argv[1]);

return;

}

if((fp2=fopen(argv[2],"r"))==NULL)

{

printf("The file %s can not be opened.\n",argv[2]);

return;

}

// 讀入一行立即寫出,直到文件結(jié)束

while(fgets(buffer,SIZE,fp1)!=NULL)

printf("%s\n",buffer);

while(fgets(buffer,SIZE,fp2)!=NULL)

fputs(buffer,fp1);

fclose(fp1);

fclose(fp2);

if((fp1=fopen(argv[1],"r"))==NULL)

{

printf("The file %s can not be opened.\n",argv[1]);

return;

}

while(fgets(buffer,SIZE,fp1)!=NULL)

printf("%s\n",buffer);

fclose(fp1);

}

C語言最文件操作函數(shù)(2)

14.freopen(打開文件)

相關(guān)函數(shù) fopen,fclose

表頭文件 #includestdio.h

定義函數(shù) FILE * freopen(const char * path,const char * mode,FILE * stream);

函數(shù)說明 參數(shù)path字符串包含欲打開的文件路徑及文件名,參數(shù)mode請(qǐng)參考fopen()說明。參數(shù)stream為已打開的文件指針。Freopen()會(huì)將原stream所打開的文件流關(guān)閉,然后打開參數(shù)path的文件。

返回值 文件順利打開后,指向該流的文件指針就會(huì)被返回。如果文件打開失敗則返回NULL,并把錯(cuò)誤代碼存在errno 中。

范例

復(fù)制代碼代碼如下:

#includestdio.h

main()

{

FILE * fp;

fp=fopen(“/etc/passwd”,”r”);

fp=freopen(“/etc/group”,”r”,fp);

fclose(fp);

}

15.fseek(移動(dòng)文件流的讀寫位置)

相關(guān)函數(shù) rewind,ftell,fgetpos,fsetpos,lseek

表頭文件 #includestdio.h

定義函數(shù) int fseek(FILE * stream,long offset,int whence);

函數(shù)說明 fseek()用來移動(dòng)文件流的讀寫位置。參數(shù)stream為已打開的文件指針,參數(shù)offset為根據(jù)參數(shù)whence來移動(dòng)讀寫位置的位移數(shù)。

參數(shù) whence為下列其中一種:

SEEK_SET從距文件開頭offset位移量為新的讀寫位置。SEEK_CUR 以目前的讀寫位置往后增加offset個(gè)位移量。

SEEK_END將讀寫位置指向文件尾后再增加offset個(gè)位移量。

當(dāng)whence值為SEEK_CUR 或SEEK_END時(shí),參數(shù)offset允許負(fù)值的出現(xiàn)。

下列是較特別的使用方式:

1) 欲將讀寫位置移動(dòng)到文件開頭時(shí):fseek(FILE *stream,0,SEEK_SET);

2) 欲將讀寫位置移動(dòng)到文件尾時(shí):fseek(FILE *stream,0,0SEEK_END);

返回值 當(dāng)調(diào)用成功時(shí)則返回0,若有錯(cuò)誤則返回-1,errno會(huì)存放錯(cuò)誤代碼。

附加說明 fseek()不像lseek()會(huì)返回讀寫位置,因此必須使用ftell()來取得目前讀寫的位置。

范例

復(fù)制代碼代碼如下:

#includestdio.h

main()

{

FILE * stream;

long offset;

fpos_t pos;

stream=fopen(“/etc/passwd”,”r”);

fseek(stream,5,SEEK_SET);

printf(“offset=%d/n”,ftell(stream));

rewind(stream);

fgetpos(stream,pos);

printf(“offset=%d/n”,pos);

pos=10;

fsetpos(stream,pos);

printf(“offset = %d/n”,ftell(stream));

fclose(stream);

}

執(zhí)行 offset = 5

offset =0

offset=10

16.ftell(取得文件流的讀取位置)

相關(guān)函數(shù) fseek,rewind,fgetpos,fsetpos

表頭文件 #includestdio.h

定義函數(shù) long ftell(FILE * stream);

函數(shù)說明 ftell()用來取得文件流目前的讀寫位置。參數(shù)stream為已打開的文件指針。

返回值 當(dāng)調(diào)用成功時(shí)則返回目前的讀寫位置,若有錯(cuò)誤則返回-1,errno會(huì)存放錯(cuò)誤代碼。

錯(cuò)誤代碼 EBADF 參數(shù)stream無效或可移動(dòng)讀寫位置的文件流。

范例 參考fseek()。

17.fwrite(將數(shù)據(jù)寫至文件流)

相關(guān)函數(shù) fopen,fread,fseek,fscanf

表頭文件 #includestdio.h

定義函數(shù) size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);

函數(shù)說明 fwrite()用來將數(shù)據(jù)寫入文件流中。參數(shù)stream為已打開的文件指針,參數(shù)ptr 指向欲寫入的數(shù)據(jù)地址,總共寫入的字符數(shù)以參數(shù)size*nmemb來決定。Fwrite()會(huì)返回實(shí)際寫入的nmemb數(shù)目。

返回值 返回實(shí)際寫入的nmemb數(shù)目。

范例

復(fù)制代碼代碼如下:

#includestdio.h

#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}

#define nmemb 3

struct test

{

char name[20];

int size;

}s[nmemb];

main()

{

FILE * stream;

set_s(0,”Linux!”);

set_s(1,”FreeBSD!”);

set_s(2,”Windows2000.”);

stream=fopen(“/tmp/fwrite”,”w”);

fwrite(s,sizeof(struct test),nmemb,stream);

fclose(stream);

}

執(zhí)行 參考fread()。

18.getc(由文件中讀取一個(gè)字符)

相關(guān)函數(shù) read,fopen,fread,fgetc

表頭文件 #includestdio.h

定義函數(shù) int getc(FILE * stream);

函數(shù)說明 getc()用來從參數(shù)stream所指的文件中讀取一個(gè)字符。若讀到文件尾而無數(shù)據(jù)時(shí)便返回EOF。雖然getc()與fgetc()作用相同,但getc()為宏定義,非真正的函數(shù)調(diào)用。

返回值 getc()會(huì)返回讀取到的字符,若返回EOF則表示到了文件尾。

范例 參考fgetc()。

19.getchar(由標(biāo)準(zhǔn)輸入設(shè)備內(nèi)讀進(jìn)一字符)

相關(guān)函數(shù) fopen,fread,fscanf,getc

表頭文件 #includestdio.h

定義函數(shù) int getchar(void);

函數(shù)說明 getchar()用來從標(biāo)準(zhǔn)輸入設(shè)備中讀取一個(gè)字符。然后將該字符從unsigned char轉(zhuǎn)換成int后返回。

返回值 getchar()會(huì)返回讀取到的字符,若返回EOF則表示有錯(cuò)誤發(fā)生。

附加說明 getchar()非真正函數(shù),而是getc(stdin)宏定義。

范例

復(fù)制代碼代碼如下:

#includestdio.h

main()

{

FILE * fp;

int c,i;

for(i=0li5;i++)

{

c=getchar();

putchar(c);

}

}

執(zhí)行 1234 /*輸入*/

1234 /*輸出*/

20.gets(由標(biāo)準(zhǔn)輸入設(shè)備內(nèi)讀進(jìn)一字符串)

相關(guān)函數(shù) fopen,fread,fscanf,fgets

表頭文件 #includestdio.h

定義函數(shù) char * gets(char *s);

函數(shù)說明 gets()用來從標(biāo)準(zhǔn)設(shè)備讀入字符并存到參數(shù)s所指的內(nèi)存空間,直到出現(xiàn)換行字符或讀到文件尾為止,最后加上NULL作為字符串結(jié)束。

返回值 gets()若成功則返回s指針,返回NULL則表示有錯(cuò)誤發(fā)生。

附加說明 由于gets()無法知道字符串s的大小,必須遇到換行字符或文件尾才會(huì)結(jié)束輸入,因此容易造成緩沖溢出的安全性問題。建議使用fgets()取代。

范例 參考fgets()

21.mktemp(產(chǎn)生唯一的臨時(shí)文件名)

相關(guān)函數(shù) tmpfile

表頭文件 #includestdlib.h

定義函數(shù) char * mktemp(char * template);

函數(shù)說明 mktemp()用來產(chǎn)生唯一的臨時(shí)文件名。參數(shù)template所指的文件名稱字符串中最后六個(gè)字符必須是XXXXXX。產(chǎn)生后的文件名會(huì)借字符串指針返回。

返回值 文件順利打開后,指向該流的文件指針就會(huì)被返回。如果文件打開失敗則返回NULL,并把錯(cuò)誤代碼存在errno中。

附加說明 參數(shù)template所指的文件名稱字符串必須聲明為數(shù)組,如:

char template[ ]=”template-XXXXXX”;

不可用char * template=”template-XXXXXX”;

范例

復(fù)制代碼代碼如下:

#includestdlib.h

main()

{

char template[ ]=”template-XXXXXX”;

mktemp(template);

printf(“template=%s/n”,template);

}

22.putc(將一指定字符寫入文件中)

相關(guān)函數(shù) fopen,fwrite,fscanf,fputc

表頭文件 #includestdio.h

定義函數(shù) int putc(int c,FILE * stream);

函數(shù)說明 putc()會(huì)將參數(shù)c轉(zhuǎn)為unsigned char后寫入?yún)?shù)stream指定的文件中。雖然putc()與fputc()作用相同,但putc()為宏定義,非真正的函數(shù)調(diào)用。

返回值 putc()會(huì)返回寫入成功的字符,即參數(shù)c。若返回EOF則代表寫入失敗。

范例 參考fputc()。

23.putchar(將指定的字符寫到標(biāo)準(zhǔn)輸出設(shè)備)

相關(guān)函數(shù) fopen,fwrite,fscanf,fputc

表頭文件 #includestdio.h

定義函數(shù) int putchar (int c);

函數(shù)說明 putchar()用來將參數(shù)c字符寫到標(biāo)準(zhǔn)輸出設(shè)備。

返回值 putchar()會(huì)返回輸出成功的字符,即參數(shù)c。若返回EOF則代表輸出失敗。

附加說明 putchar()非真正函數(shù),而是putc(c,stdout)宏定義。

范例 參考getchar()。

24.rewind(重設(shè)文件流的讀寫位置為文件開頭)

相關(guān)函數(shù) fseek,ftell,fgetpos,fsetpos

表頭文件 #includestdio.h

定義函數(shù) void rewind(FILE * stream);

函數(shù)說明 rewind()用來把文件流的讀寫位置移至文件開頭。參數(shù)stream為已打開的文件指針。此函數(shù)相當(dāng)于調(diào)用fseek(stream,0,SEEK_SET)。

返回值

范例 參考fseek()

25.setbuf(設(shè)置文件流的緩沖區(qū))

相關(guān)函數(shù) setbuffer,setlinebuf,setvbuf

表頭文件 #includestdio.h

定義函數(shù) void setbuf(FILE * stream,char * buf);

函數(shù)說明 在打開文件流后,讀取內(nèi)容之前,調(diào)用setbuf()可以用來設(shè)置文件流的緩沖區(qū)。參數(shù)stream為指定的文件流,參數(shù)buf指向自定的緩沖區(qū)起始地址。如果參數(shù)buf為NULL指針,則為無緩沖IO。Setbuf()相當(dāng)于調(diào)用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ)

返回值

26.setbuffer(設(shè)置文件流的緩沖區(qū))

相關(guān)函數(shù) setlinebuf,setbuf,setvbuf

表頭文件 #includestdio.h

定義函數(shù) void setbuffer(FILE * stream,char * buf,size_t size);

函數(shù)說明 在打開文件流后,讀取內(nèi)容之前,調(diào)用setbuffer()可用來設(shè)置文件流的緩沖區(qū)。參數(shù)stream為指定的文件流,參數(shù)buf指向自定的緩沖區(qū)起始地址,參數(shù)size為緩沖區(qū)大小。

返回值

27.setlinebuf(設(shè)置文件流為線性緩沖區(qū))

相關(guān)函數(shù) setbuffer,setbuf,setvbuf

表頭文件 #includestdio.h

定義函數(shù) void setlinebuf(FILE * stream);

函數(shù)說明 setlinebuf()用來設(shè)置文件流以換行為依據(jù)的無緩沖IO。相當(dāng)于調(diào)用:setvbuf(stream,(char * )NULL,_IOLBF,0);請(qǐng)參考setvbuf()。

返回值

28.setvbuf(設(shè)置文件流的緩沖區(qū))

相關(guān)函數(shù) setbuffer,setlinebuf,setbuf

表頭文件 #includestdio.h

定義函數(shù) int setvbuf(FILE * stream,char * buf,int mode,size_t size);

函數(shù)說明 在打開文件流后,讀取內(nèi)容之前,調(diào)用setvbuf()可以用來設(shè)置文件流的緩沖區(qū)。參數(shù)stream為指定的文件流,參數(shù)buf指向自定的緩沖區(qū)起始地址,參數(shù)size為緩沖區(qū)大小,參數(shù)mode有下列幾種

_IONBF 無緩沖IO

_IOLBF 以換行為依據(jù)的無緩沖IO

_IOFBF 完全無緩沖IO。如果參數(shù)buf為NULL指針,則為無緩沖IO。

返回值

29.ungetc(將指定字符寫回文件流中)

相關(guān)函數(shù) fputc,getchar,getc

表頭文件 #includestdio.h

定義函數(shù) int ungetc(int c,FILE * stream);

函數(shù)說明 ungetc()將參數(shù)c字符寫回參數(shù)stream所指定的文件流。這個(gè)寫回的字符會(huì)由下一個(gè)讀取文件流的函數(shù)取得。

返回值 成功則返回c 字符,若有錯(cuò)誤則返回EOF。

復(fù)制代碼代碼如下:

#include stdio.h

#include stdlib.h

int main()

{

FILE *fp = NULL;

char* str;

char re;

int num = 10;

str = (char*)malloc(100);

//snprintf(str, 10,"test: %s", "0123456789012345678");

// printf("str=%s\n", str);

fp = fopen("/local/test.c","a+");

if (fp==NULL){

printf("Fail to open file\n");

}

// ? ? fseek(fp,-1,SEEK_END);

num = ftell(fp);

printf("test file long:%d\n",num);

fscanf(fp,"%s",str);

printf("str = %s\n",str);

printf("test a: %s\n",str);

while ((re=getc(fp))!=EOF){//getc可以用作fgetc用

printf("%c",re);

}

//fread(str,10,10,fp);

fgets(str,100,fp);

printf("test a: %s\n",str);

sprintf(str,"xiewei test is:%s", "ABCDEFGHIGKMNI");

printf("str2=%s\n", str);

// ?fprintf(fp,"%s\n",str);

fwrite(str,2,10,fp);

num = ftell(fp);

if(str!=NULL){

free(str);

}

fclose(fp);

return 0;

}

C語言文本文件操作問題!

C語言文件操作詳解

C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標(biāo)準(zhǔn)庫函數(shù)來實(shí)現(xiàn)。文件操作標(biāo)準(zhǔn)庫函數(shù)有:

文件的打開操作 fopen 打開一個(gè)文件

文件的關(guān)閉操作 fclose 關(guān)閉一個(gè)文件

文件的讀寫操作 fgetc 從文件中讀取一個(gè)字符

  fputc 寫一個(gè)字符到文件中去

  fgets 從文件中讀取一個(gè)字符串

  fputs 寫一個(gè)字符串到文件中去

  fprintf 往文件中寫格式化數(shù)據(jù)

  fscanf 格式化讀取文件中數(shù)據(jù)

  fread 以二進(jìn)制形式讀取文件中的數(shù)據(jù)

  fwrite 以二進(jìn)制形式寫數(shù)據(jù)到文件中去

  getw 以二進(jìn)制形式讀取一個(gè)整數(shù)

  putw 以二進(jìn)制形式存貯一個(gè)整數(shù)

 文件狀態(tài)檢查函數(shù) feof 文件結(jié)束

  ferror 文件讀/寫出錯(cuò)

  clearerr 清除文件錯(cuò)誤標(biāo)志

  ftell 了解文件指針的當(dāng)前位置

文件定位函數(shù) rewind 反繞

  fseek 隨機(jī)定位

# 文件的打開

 1.函數(shù)原型

FILE *fopen(char *pname,char *mode)

 2.功能說明

按照mode 規(guī)定的方式,打開由pname指定的文件。若找不到由pname指定的相應(yīng)文件,就按以下方式之一處理:

(1) 此時(shí)如mode 規(guī)定按寫方式打開文件,就按由pname指定的名字建立一個(gè)新文件;

(2) 此時(shí)如mode 規(guī)定按讀方式打開文件,就會(huì)產(chǎn)生一個(gè)錯(cuò)誤。

打開文件的作用是:

(1)分配給打開文件一個(gè)FILE 類型的文件結(jié)構(gòu)體變量,并將有關(guān)信息填入文件結(jié)構(gòu)體變量;

(2)開辟一個(gè)緩沖區(qū);

(3)調(diào)用操作系統(tǒng)提供的打開文件或建立新文件功能,打開或建立指定文件;

FILE *:指出fopen是一個(gè)返回文件類型的指針函數(shù);

 3.參數(shù)說明

pname:是一個(gè)字符指針,它將指向要打開或建立的文件的文件名字符串。

mode:是一個(gè)指向文件處理方式字符串的字符指針。所有可能的文件處理方式見表8.1

 4.返回值

 正常返回:被打開文件的文件指針。

 異常返回:NULL,表示打開操作不成功。

例如:

//定義一個(gè)名叫fp文件指針

FILE *fp;

//判斷按讀方式打開一個(gè)名叫test的文件是否失敗

if((fp=fopen("test","r")) == NULL)//打開操作不成功

{

printf("The file can not be opened.\n");  

exit(1);//結(jié)束程序的執(zhí)行

}

 要說明的是:C語言將計(jì)算機(jī)的輸入輸出設(shè)備都看作是文件。例如,鍵盤文件、屏幕文件等。ANSI C標(biāo)準(zhǔn)規(guī)定,在執(zhí)行程序時(shí)系統(tǒng)先自動(dòng)打開鍵盤、屏幕、錯(cuò)誤三個(gè)文件。這三個(gè)文件的文件指針分別是:標(biāo)準(zhǔn)輸入stdin、標(biāo)準(zhǔn)輸出stdout和標(biāo)準(zhǔn)出錯(cuò) stderr。

具體的函數(shù),請(qǐng)查看鏈接:

判斷文件是否存在 c語言 函數(shù)

排版後如下: int access(const char* szPathName){ #ifdef _WIN32 if ( _access(szPathName, 0) != 0 ) return -1; #else if ( access(szPathName, F_OK) != 0 ) return -1; #endif return 0; } 這是用到 preprocessor. 用在跨平臺(tái)(platform)的各種編譯器. 各平臺(tái)的 .h 會(huì)不同. 在微軟的平臺(tái)會(huì)定義 _WIN32 這個(gè)符號(hào). 所以這段話就成為 int access(const char* szPathName){ if ( _access(szPathName, 0) != 0 ) return -1; return 0; } 在其它平臺(tái)不會(huì)定義 _WIN32 這個(gè)符號(hào). 所以這段話就成為 int access(const char* szPathName){ if ( access(szPathName, F_OK) != 0 ) return -1; return 0; }

c語言:文件操作與字符處理

C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標(biāo)準(zhǔn)庫函數(shù)來實(shí)現(xiàn)。文件操作標(biāo)準(zhǔn)庫函數(shù)有:

文件的打開操作 fopen 打開一個(gè)文件

文件的關(guān)閉操作 fclose 關(guān)閉一個(gè)文件

文件的讀寫操作 fgetc 從文件中讀取一個(gè)字符

  fputc 寫一個(gè)字符到文件中去

  fgets 從文件中讀取一個(gè)字符串

  fputs 寫一個(gè)字符串到文件中去

  fprintf 往文件中寫格式化數(shù)據(jù)

  fscanf 格式化讀取文件中數(shù)據(jù)

  fread 以二進(jìn)制形式讀取文件中的數(shù)據(jù)

  fwrite 以二進(jìn)制形式寫數(shù)據(jù)到文件中去

  getw 以二進(jìn)制形式讀取一個(gè)整數(shù)

  putw 以二進(jìn)制形式存貯一個(gè)整數(shù)

 文件狀態(tài)檢查函數(shù) feof 文件結(jié)束

  ferror 文件讀/寫出錯(cuò)

  clearerr 清除文件錯(cuò)誤標(biāo)志

  ftell 了解文件指針的當(dāng)前位置

文件定位函數(shù) rewind 反繞

  fseek 隨機(jī)定位

# 文件的打開

 1.函數(shù)原型

FILE *fopen(char *pname,char *mode)

 2.功能說明

按照mode 規(guī)定的方式,打開由pname指定的文件。若找不到由pname指定的相應(yīng)文件,就按以下方式之一處理:

(1) 此時(shí)如mode 規(guī)定按寫方式打開文件,就按由pname指定的名字建立一個(gè)新文件;

(2) 此時(shí)如mode 規(guī)定按讀方式打開文件,就會(huì)產(chǎn)生一個(gè)錯(cuò)誤。

打開文件的作用是:

(1)分配給打開文件一個(gè)FILE 類型的文件結(jié)構(gòu)體變量,并將有關(guān)信息填入文件結(jié)構(gòu)體變量;

(2)開辟一個(gè)緩沖區(qū);

(3)調(diào)用操作系統(tǒng)提供的打開文件或建立新文件功能,打開或建立指定文件;

FILE *:指出fopen是一個(gè)返回文件類型的指針函數(shù);

 3.參數(shù)說明

pname:是一個(gè)字符指針,它將指向要打開或建立的文件的文件名字符串。

mode:是一個(gè)指向文件處理方式字符串的字符指針。所有可能的文件處理方式見表8.1

 4.返回值

 正常返回:被打開文件的文件指針。

 異常返回:NULL,表示打開操作不成功。

例如:

//定義一個(gè)名叫fp文件指針

FILE *fp;

//判斷按讀方式打開一個(gè)名叫test的文件是否失敗

if((fp=fopen("test","r")) == NULL)//打開操作不成功

{

printf("The file can not be opened.\n");  

exit(1);//結(jié)束程序的執(zhí)行

}

 要說明的是:C語言將計(jì)算機(jī)的輸入輸出設(shè)備都看作是文件。例如,鍵盤文件、屏幕文件等。ANSI C標(biāo)準(zhǔn)規(guī)定,在執(zhí)行程序時(shí)系統(tǒng)先自動(dòng)打開鍵盤、屏幕、錯(cuò)誤三個(gè)文件。這三個(gè)文件的文件指針分別是:標(biāo)準(zhǔn)輸入stdin、標(biāo)準(zhǔn)輸出stdout和標(biāo)準(zhǔn)出錯(cuò) stderr。

* 文件的關(guān)閉

1. 函數(shù)原型

int fclose(FILE *fp);

2. 功能說明

關(guān)閉由fp指出的文件。此時(shí)調(diào)用操作系統(tǒng)提供的文件關(guān)閉功能,關(guān)閉由fp-fd指出的文件;釋放由fp指出的文件類型結(jié)構(gòu)體變量;返回操作結(jié)果,即0或EOF。

3. 參數(shù)說明

fp:一個(gè)已打開文件的文件指針。

4. 返回值

正常返回:0。

異常返回:EOF,表示文件在關(guān)閉時(shí)發(fā)生錯(cuò)誤。

例如:

int n=fclose(fp);

*文件的讀寫操作

A. 從文件中讀取一個(gè)字符

1. 函數(shù)原型

int fgetc(FILE *fp);

2. 功能說明

從fp所指文件中讀取一個(gè)字符。

3. 參數(shù)說明

fp:這是個(gè)文件指針,它指出要從中讀取字符的文件。

4. 返回值

正常返回: 返回讀取字符的代碼。

非正常返回:返回EOF。

B. 寫一個(gè)字符到文件中去

1. 函數(shù)原型

int fputc(int ch,FILE *fp)

2. 功能說明

把ch中的字符寫入由fp指出的文件中去。

3. 參數(shù)說明

ch:是一個(gè)整型變量,內(nèi)存要寫到文件中的字符(C語言中整型量和字符量可以通用)。

fp:這是個(gè)文件指針,指出要在其中寫入字符的文件。

4. 返回值

正常返回: 要寫入字符的代碼。

非正常返回:返回EOF。例如,要往"讀打開"文件中寫一個(gè)字符時(shí),會(huì)發(fā)生錯(cuò)誤而返回一個(gè)EOF。

C. 從文件中讀取一個(gè)字符串

1. 函數(shù)原型

char *fgets(char *str,int n,FILE *fp)

2. 功能說明

從由fp指出的文件中讀取n-1個(gè)字符,并把它們存放到由str指出的字符數(shù)組中去,最后加上一個(gè)字符串結(jié)束符'\0'。

3. 參數(shù)說明

str:接收字符串的內(nèi)存地址,可以是數(shù)組名,也可以是指針。

n: 指出要讀取字符的個(gè)數(shù)。

fp:這是個(gè)文件指針,指出要從中讀取字符的文件。

4. 返回值

正常返回:返回字符串的內(nèi)存首地址,即str的值。

非正常返回:返回一個(gè)NULL值,此時(shí)應(yīng)當(dāng)用feof()或ferror()函數(shù)來判別是讀取到了文件尾,還是發(fā)生了錯(cuò)誤。例如,要從"寫打開"文件中讀取字符串,將

發(fā)生錯(cuò)誤而返回一個(gè)NULL值。

D. 寫一個(gè)字符串到文件中去

1. 函數(shù)原型

int fputs(char *str,FILE *fp)

2. 功能說明

把由str指出的字符串寫入到fp所指的文件中去。

3. 參數(shù)說明

str:指出要寫到文件中去的字符串。

fp:這是個(gè)文件指針,指出字符串要寫入其中的文件。

4. 返回值

正常返回: 寫入文件的字符個(gè)數(shù),即字符串的長(zhǎng)度。

非正常返回:返回一個(gè)NULL值,此時(shí)應(yīng)當(dāng)用feof()或ferror()函數(shù)來判別是讀取到了文件尾,還是發(fā)生了錯(cuò)誤。例如,要往一個(gè)"讀打開" 文件中寫字符串時(shí),

會(huì)發(fā)生錯(cuò)誤而返回一個(gè)NULL值。

E. 往文件中寫格式化數(shù)據(jù)

1.函數(shù)原型

int fprintf(FILE *fp,char *format,arg_list)

2.功能說明

將變量表列(arg_list)中的數(shù)據(jù),按照format指出的格式,寫入由fp指定的文件。fprintf()函數(shù)與printf()函數(shù)的功能相同,只是printf()函數(shù)是將數(shù)據(jù)寫入屏幕文件(stdout)。

3.參數(shù)說明

fp:這是個(gè)文件指針,指出要將數(shù)據(jù)寫入的文件。

format:這是個(gè)指向字符串的字符指針,字符串中含有要寫出數(shù)據(jù)的格式,所以該字符串成為格式串。格式串描述的規(guī)則與printf()函數(shù)中的格式串相同。

arg_list:是要寫入文件的變量表列,各變量之間用逗號(hào)分隔。

4.返回值

無。

G. 以二進(jìn)制形式讀取文件中的數(shù)據(jù)

1. 函數(shù)原型

int fread(void *buffer,unsigned sife,unsigned count,FILE *fp)

2. 功能說明

從由fp指定的文件中,按二進(jìn)制形式將sife*count個(gè)數(shù)據(jù)讀到由buffer指出的數(shù)據(jù)區(qū)中。

3. 參數(shù)說明

buffer:這是一個(gè)void型指針,指出要將讀入數(shù)據(jù)存放在其中的存儲(chǔ)區(qū)首地址。

sife:指出一個(gè)數(shù)據(jù)塊的字節(jié)數(shù),即一個(gè)數(shù)據(jù)塊的大小尺寸。

count:指出一次讀入多少個(gè)數(shù)據(jù)塊(sife)。

fp:這是個(gè)文件指針,指出要從其中讀出數(shù)據(jù)的文件。

4.返回值

正常返回:實(shí)際讀取數(shù)據(jù)塊的個(gè)數(shù),即count。

異常返回:如果文件中剩下的數(shù)據(jù)塊個(gè)數(shù)少于參數(shù)中count指出的個(gè)數(shù),或者發(fā)生了錯(cuò)誤,返回0值。此時(shí)可以用feof()和ferror()來判定到底出現(xiàn)了什么

情況。

H. 以二進(jìn)制形式寫數(shù)據(jù)到文件中去

1. 函數(shù)原型

int fwrite(void *buffer,unsigned sife,unsigned count,FILE *fp)

2. 功能說明

按二進(jìn)制形式,將由buffer指定的數(shù)據(jù)緩沖區(qū)內(nèi)的sife*count個(gè)數(shù)據(jù)寫入由fp指定的文件中去。

3. 參數(shù)說明

buffer:這是一個(gè)void型指針,指出要將其中數(shù)據(jù)輸出到文件的緩沖區(qū)首地址。

sife:指出一個(gè)數(shù)據(jù)塊的字節(jié)數(shù),即一個(gè)數(shù)據(jù)塊的大小尺寸。

count:一次輸出多少個(gè)數(shù)據(jù)塊(sife)。

fp:這是個(gè)文件指針,指出要從其中讀出數(shù)據(jù)的文件。

4.返回值

正常返回:實(shí)際輸出數(shù)據(jù)塊的個(gè)數(shù),即count。

異常返回:返回0值,表示輸出結(jié)束或發(fā)生了錯(cuò)誤。

I. 以二進(jìn)制形式讀取一個(gè)整數(shù)

1. 函數(shù)原型

int getw(FILE *fp)

2. 功能說明

從由fp指定的文件中,以二進(jìn)制形式讀取一個(gè)整數(shù)。

3. 參數(shù)說明

fp:是文件指針。

4. 返回值

正常返回:所讀取整數(shù)的值。

異常返回:返回EOF,即-1。由于讀取的整數(shù)值有可能是-1,所以必須用feof()或ferror()來判斷是到了文件結(jié)束,還是出現(xiàn)了一個(gè)出錯(cuò)。

J. 以二進(jìn)制形式存貯一個(gè)整數(shù)

1.函數(shù)原型

int putw(int n,FILE *fp)

2. 功能說明

 以二進(jìn)制形式把由變量n指出的整數(shù)值存放到由fp指定的文件中。

3. 參數(shù)說明

 n:要存入文件的整數(shù)。

 fp:是文件指針。

4. 返回值

 正常返回:所輸出的整數(shù)值。

 異常返回:返回EOF,即-1。由于輸出的整數(shù)值有可能是-1,所以必須用feof()或ferror()來判斷是到了文件結(jié)束,還是出現(xiàn)了一個(gè)出錯(cuò)。

* 文件狀態(tài)檢查

A. 文件結(jié)束

(1) 函數(shù)原型

int feof(FILE *fp)

(2) 功能說明

 該函數(shù)用來判斷文件是否結(jié)束。

(3) 參數(shù)說明

 fp:文件指針。

(4) 返回值

 0:假值,表示文件未結(jié)束。

 1:真值,表示文件結(jié)束。

B. 文件讀/寫出錯(cuò)

(1) 函數(shù)原型

int ferror(FILE *fp)

(2) 功能說明

 檢查由fp指定的文件在讀寫時(shí)是否出錯(cuò)。

(3) 參數(shù)說明

 fp:文件指針。

(4) 返回值

 0:假值,表示無錯(cuò)誤。

 1:真值,表示出錯(cuò)。

C. 清除文件錯(cuò)誤標(biāo)志

(1) 函數(shù)原型

void clearerr(FILE *fp)

(2) 功能說明

 清除由fp指定文件的錯(cuò)誤標(biāo)志。

(3) 參數(shù)說明

 fp:文件指針。

(4) 返回值

 無。

D. 了解文件指針的當(dāng)前位置

(1) 函數(shù)原型

long ftell(FILE *fp)

(2) 功能說明

 取得由fp指定文件的當(dāng)前讀/寫位置,該位置值用相對(duì)于文件開頭的位移量來表示。

(3) 參數(shù)說明

 fp:文件指針。

(4) 返回值

 正常返回:位移量(這是個(gè)長(zhǎng)整數(shù))。

 異常返回:-1,表示出錯(cuò)。

(5) 實(shí)例

* 文件定位

A. 反繞

(1) 函數(shù)原型

void rewind(FILE *fp)

(2) 功能說明

 使由文件指針fp指定的文件的位置指針重新指向文件的開頭位置。

(3) 參數(shù)說明

 fp:文件指針。

(4) 返回值

 無。(5) 實(shí)

B. 隨機(jī)定位

(1) 函數(shù)原型

int fseek(FILE *fp,long offset,int base)

(2) 功能說明

 使文件指針fp移到基于base的相對(duì)位置offset處。

(3)參數(shù)說明

 fp:文件指針。

 offset:相對(duì)base的字節(jié)位移量。這是個(gè)長(zhǎng)整數(shù),用以支持大于64KB的文件。

 base:文件位置指針移動(dòng)的基準(zhǔn)位置,是計(jì)算文件位置指針位移的基點(diǎn)。ANSI C定義了base的可能取值,以及這些取值的符號(hào)常量。

(4)返回值

正常返回:當(dāng)前指針位置。

異常返回:-1,表示定位操作出錯(cuò)。

* 關(guān)于exit()函數(shù)

1. 函數(shù)原型

void exit(int status)

2. 功能說明

exit()函數(shù)使程序立即終止執(zhí)行,同時(shí)將緩沖區(qū)中剩余的數(shù)據(jù)輸出并關(guān)閉所有已經(jīng)打開的文件。

3. 參數(shù)說明

status:為0值表示程序正常終止,為非0值表示一個(gè)定義錯(cuò)誤。

4. 返回值

無。

* 關(guān)于feof()函數(shù)

1. 函數(shù)原型

int feof(FILE *fp)

2. 功能說明

   在文本文件(ASCII文件)中可以用值為-1的符號(hào)常量EOF來作為文件的結(jié)束符。但是在二進(jìn)制文件中-1往往可能是一個(gè)有意義的數(shù)據(jù),因此不能用它 來作為文件的結(jié)束標(biāo)志。為了能有效判別文件是否結(jié)束,ANSI C提供了標(biāo)準(zhǔn)函數(shù)feof(),用來識(shí)別文件是否結(jié)束。

3. 參數(shù)說明

fp:文件指針。

4. 返回值

返回為非0值:已到文件尾。

返回為0值:表示還未到文件尾。


文章標(biāo)題:c語言文件狀態(tài)檢查函數(shù) c語言程序怎么檢查錯(cuò)誤
URL鏈接:http://weahome.cn/article/dosodpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部