?C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標(biāo)準(zhǔn)庫函數(shù)來實(shí)現(xiàn)。文件操作標(biāo)準(zhǔn)庫函數(shù)有:「文件的打開操作」 void?main(int?argc,char?*argv[])?//命令行參數(shù) { ????int?ch;//定義文件類型指針 ????FILE?*fp;//判斷命令行是否正確 ????if(argc!=2) ????{ ????????printf("Error?format,Usage:?display?filename1 "); ????????return;?//鍵入了錯(cuò)誤的命令行,結(jié)束程序的執(zhí)行 ????} ????//按讀方式打開由argv[1]指出的文件 ????if((fp=fopen(argv[1],"r"))==NULL) ????{ ????????printf("The?file?<%s>?can?not?be?opened. ",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ù)原型
- fopen 打開一個(gè)文件
- 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ù)
- feof 文件結(jié)束
- ferror 文件讀/寫出錯(cuò)
- clearerr 清除文件錯(cuò)誤標(biāo)志
- ftell 了解文件指針的當(dāng)前位置
- 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ī)定按讀方式打開文件,就會產(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.14、返回值 正常返回:被打開文件的文件指針。 異常返回:NULL,表示打開操作不成功。例如:
//定義一個(gè)名叫fp文件指針 FILE *fp; //判斷按讀方式打開一個(gè)名叫test的文件是否失敗 if((fp=fopen("test","r"))?==?NULL)//打開操作不成功 { ????printf("The?file?can?not?be?opened. ");????? ????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è)文件指針,它指出要從中讀取字符的文件?! ?/span>4、返回值 正常返回:返回讀取字符的代碼?! ?/span>非正常返回:返回EOF。例如,要從"寫打開"文件中讀取一個(gè)字符時(shí),會發(fā)生錯(cuò)誤而返回一個(gè)EOF?! ?/span>5、實(shí)例【例8.1】顯示指定文件的內(nèi)容。
//程序名為:display.c //執(zhí)行時(shí)可用:display filename1 形式的命令行運(yùn)行。顯示文件filename1中的內(nèi)容。例如,執(zhí)行命令行display display.c將在屏幕上顯示display的原代碼。 //File?display?program. #include?
int?fputc(int?ch,FILE?*fp) 2、功能說明 把ch中的字符寫入由fp指出的文件中去。3、參數(shù)說明 ch:是一個(gè)整型變量,內(nèi)存要寫到文件中的字符(C語言中整型量和字符量可以通用)?! ?/span>fp:這是個(gè)文件指針,指出要在其中寫入字符的文件。4、返回值 正常返回:要寫入字符的代碼?! ?/span>非正常返回:返回EOF。例如,要往"讀打開"文件中寫一個(gè)字符時(shí),會發(fā)生錯(cuò)誤而返回一個(gè)EOF。
審核編輯:湯梓紅
電子發(fā)燒友App




















評論