<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>

    《C 語言程序設(shè)計》第10章

    上傳人:仙*** 文檔編號:248219406 上傳時間:2024-10-22 格式:PPT 頁數(shù):62 大?。?25KB
    收藏 版權(quán)申訴 舉報 下載
    《C 語言程序設(shè)計》第10章_第1頁
    第1頁 / 共62頁
    《C 語言程序設(shè)計》第10章_第2頁
    第2頁 / 共62頁
    《C 語言程序設(shè)計》第10章_第3頁
    第3頁 / 共62頁

    下載文檔到電腦,查找使用更方便

    10 積分

    下載資源

    還剩頁未讀,繼續(xù)閱讀

    資源描述:

    《《C 語言程序設(shè)計》第10章》由會員分享,可在線閱讀,更多相關(guān)《《C 語言程序設(shè)計》第10章(62頁珍藏版)》請在裝配圖網(wǎng)上搜索。

    1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第,10,章 文件,本資料由,-,校園大學(xué)生創(chuàng)業(yè)網(wǎng),-,提供,http:/,/,在線代理,http:/,/,提供部分資料,第,10,章 文件,10.1,文件的概述,10.2,文件的打開與關(guān)閉,10.3,文件測試函數(shù),10.4,文件的讀寫操作,10.5,出錯的檢測,10.6,文件的隨機讀寫操作,10.1,文件的概述,10.1.1,數(shù)據(jù)文件,10.1.2,文件的存取方式,10.1.3,流和文件,10.1.4,文件指針類型,10.1.5,文件操作的步驟,10.1.1,數(shù)據(jù)文件,1.,文本文件,2.,二進制文件,1

    2、.,文本文件,文本文件,也稱,ASCII,文件,是一種字符流文件。,文件由一個個字符首尾相接而成,其中每個字符占,1,字節(jié),存放的是字符的,ASCII,碼。,文本文件的優(yōu)點是可以直接閱讀,而且,ASCII,代碼標準統(tǒng)一,使文件易于移植。,其缺點是輸入,/,輸出都要進行轉(zhuǎn)換,效率低。,2.,二進制文件,二進制文件中的數(shù)據(jù)是按其在內(nèi)存中的存儲形式存放的。,由于二進制文件在輸入輸出時,不必進行轉(zhuǎn)換,故效率高。,但二進制文件只能供機器閱讀,人工無法閱讀,也不能打印。而且,由于不同的計算機系統(tǒng)對數(shù)據(jù)的二進制表示也各有差異,因此,可移植性差。,一般用二進制文件來保存數(shù)據(jù)處理的中間結(jié)果。,10.1.2,文件

    3、的存取方式,1.,順序存取和隨機存取,2.,順序文件和隨機文件,1.,順序存取和隨機存取,順序存取是指只能依先后次序存取文件中的數(shù)據(jù)。,例如,:,在流式文件中,存取完第一字節(jié),才能存取第二字節(jié);存取完第,n-1,字節(jié),才能存取第,n,字節(jié)。,隨機存取也稱直接存取,可以直接存取文件中指定的數(shù)據(jù)。,例如:在流式文件中,可以直接存取指定的第,i,個字節(jié),(,或字符,),,而不管第,i-1,字節(jié)是否已經(jīng)存取。,2.,順序文件和隨機文件,可以進行順序存取的文件稱為順序文件。,在順序文件中,記錄的邏輯順序和物理順序相同。,記錄可以不等長。,讀出某一條記錄的速度慢,不能直接對文件進行修改,適宜于對文件順序批

    4、量處理。,可以進行隨機存取的文件稱為隨機文件。,在隨機文件中,每條記錄等長,各數(shù)據(jù)項長度固定,每個記錄有惟一的記錄號。,讀寫文件時,按記錄號直接讀寫指定的記錄,適宜于隨機讀寫某條記錄的操作。,10.1.3,流和文件,C,語言為程序員和用戶的設(shè)備之間提供了一層抽象的東西,這一層抽象的東西就稱之為“流”,而將具體的實際設(shè)備叫做文件。,流是一個邏輯設(shè)備,其具有諸多相同的行為。因此,用來進行磁盤文件寫的函數(shù)也同樣可以用來進行打印機的寫入。,在,C,中有兩種性質(zhì)的流:文字流和二進制流。,10.1.4,文件指針類型,文件指針類型,FILE,是一個新的數(shù)據(jù)類型。它是,C,語言基本數(shù)據(jù)類型的集合,稱之為“文件

    5、結(jié)構(gòu)指針”。,Turbo C,在,stdio.h,文件中的文件類型聲明為:,typedef,struct,short level;,unsigned flags;,char,fd,;,unsigned char hold;,short,bsize,;,unsigned char *buffer;,unsigned char *,curp,;,unsigned,istemp,;,short token;,FILE;,有了文件指針類型就可以定義指向文件的變量和指針。例如:,FILE *,fp,;,fp,=fopen(file1,r);,上述語句的含義是在當前目錄下打開文件“,file1”,,并使,

    6、fp,指向該文件。,語句中的字母“,r”,是文件打開方式,表示只能對該文件進行“讀”操作。,10.1.5,文件操作的步驟,在,Turbo C 2.0,中,所有與文件操作有關(guān)的庫函數(shù)都保存在標題文件,stdio.h,中。,文件的創(chuàng)建和使用都需要由程序完成,一般要經(jīng)過以下三個步驟:,(,1,)打開文件。用標準庫函數(shù),fopen,(),打開文件,它通知編譯系統(tǒng)三個信息:需要打開的文件名;使用文件的方式,(,讀還是寫等,),;使用的文件指針。,(,2,)文件讀寫。用文件輸入,/,輸出函數(shù)對文件進行讀寫,這些輸入輸出函數(shù)與前面介紹的標準輸入輸出函數(shù)在功能上有相似之處,但使用上又不盡相同。,(,3,)關(guān)閉

    7、文件。文件讀寫完畢,用標準函數(shù),fclose,(),將文件關(guān)閉。它的功能是把數(shù)據(jù)真正寫入磁盤,(,否則數(shù)據(jù)可能還在緩沖區(qū)中,),,切斷文件指針與文件名之間的聯(lián)系,釋放文件指針。如不關(guān)閉則多半會丟失數(shù)據(jù)。,文件存取的操作步驟及相關(guān)庫函數(shù)如表,10-1,所示。,文件操作步驟,相關(guān)的庫函數(shù),打開文件,fopen,(),文件讀寫,fscanf,(),fprintf,(),格式,I/O,函數(shù),getw,(),putw,(),字符,I/O,函數(shù),fgetc,(),fputc,(),字符,I/O,函數(shù),fgets,(),fputs,(),字符串,I/O,函數(shù),fread,(),fwrite,(),數(shù)據(jù)塊,I

    8、/O,函數(shù),關(guān)閉文件,fclose,(),表,10-1,文件存取的操作步驟及相關(guān)庫函數(shù),10.2,文件的打開與關(guān)閉,10.2.1,文件的打開,10.2.2,文件的關(guān)閉,10.2.1,文件的打開,文件打開函數(shù),fopen,用來打開一個文件,其調(diào)用的一般形式為:,文件指針名,=,fopen,(,文件名,使用文件方式,);,其中:“文件指針名”必須是被說明為,FILE,類型的指針變量;“文件名”是被打開文件的文件名,文件名通常是,文件變量或文件數(shù)組,;“使用文件方式”是指文件的類型和操作要求。,文件使用方式,代表的含義,“,r”,打開一個已有的文本文件,只允許讀取數(shù)據(jù),“,w”,打開或建立一個文本文

    9、件,只允許寫入數(shù)據(jù),“,at”,打開一個已有的文本文件,并在文件末尾寫數(shù)據(jù),“,rt,+”,打開一個已有的文本文件,允許讀和寫,“,at+”,打開一個已有的文本文件,允許讀或在文件末追加數(shù)據(jù),“,wt+”,打開或建立一個文本文件,允許讀寫,表,10-2,文本文件的符號及其含義,文件的使用方式共有,12,種,表,10-2,給出了文本文件的符號和意義。,文件使用方式,代表的含義,“,rb,”,打開一個已存在的二進制文件,只允許讀數(shù)據(jù),“,wb,”,打開或建立一個二進制文件,只允許寫數(shù)據(jù),“,ab,”,打開一個二進制文件,并在文件末尾追加數(shù)據(jù),“,rb,+”,打開一個二進制文件,允許讀和寫,“,wb

    10、,+”,打開或建立一個二進制文件,允許讀和寫,“,ab,+”,打開一個二進制文件,允許讀或在文件末追加數(shù)據(jù),表,10-3,二進制文件的符號及其含義,下面的表,10-3,介紹的另外六種文件的操作方式是針對“二進制文件”類型的。,字母,代表,含義,r,read,讀取數(shù)據(jù),w,write,寫入數(shù)據(jù),a,append,追加數(shù)據(jù),t,text,文本文件,可省略不寫,b,binary,二進制文件,+,可讀可寫,表,10-4,文件使用方式中的字符及含義,文件使用方式由,r,、,w,、,a,、,t,、,b,和,+,六個字符組成,各字符的含義如表,10-4,所示。,10.2.2,文件的關(guān)閉,文件使用完畢后,應(yīng)使

    11、用關(guān)閉文件函數(shù),fclose,把文件關(guān)閉,以避免文件數(shù)據(jù)丟失等情況的發(fā)生。,fclose,函數(shù)調(diào)用的一般形式為:,fclose,(,FILE *,fp,),其中,參數(shù),fp,是文件型指針,通過,fopen,(),函數(shù)已經(jīng)獲得,它指向某個打開的文件。例如:,fclose(fp,) ;/*,關(guān)閉,fp,所指向的文件*,/,當正常完成關(guān)閉文件的操作時,,fclose,函數(shù)的返回值為,0,,表示已正確關(guān)閉指定的文件,;,如返回非零值則表示有錯誤發(fā)生。,例,10.1,文件的打開與關(guān)閉應(yīng)用舉例一。,#include ,main(), FILE *,fp,;,/*,定義一個文件指針*,/,int,n;,fp

    12、,=fopen(231001.c, ,rb,); /*,以只讀方式打開,231001.c*/,if(fp,=NULL),/*,判斷文件是否打開成功*,/,puts(,Sorry,file,open error);,/*,提示打開不成功*,/,n=,fclose(fp,);,/*,關(guān)閉打開的文件*,/,if(n,=0),printf,( The file succeed close);,/*,提示關(guān)閉成功*,/,else puts( The file close error);,/*,提示關(guān)閉不成功*,/,運行程序,如果成功將文件打開,則屏幕顯示如下:,The file succeed clos

    13、e,否則屏幕顯示:,Sorry,file,open error,The file close error,例,10.2,文件的打開與關(guān)閉應(yīng)用舉例二。,#include ,main(), FILE *,fp,;,/*,定義一個文件指針*,/,if(fp,=fopen(d:tc231001.c, ,rb,“)=NULL),printf(file,can not open!n);,exit(0);,/*,關(guān)閉所有文件,終止程序運行*,/,else,printf,(“ The file succeed open!n);,/*,提示文件成功打開 *,/,fclose(fp,);,運行程序,如果成功將文件

    14、打開,,則屏幕顯示如下:,The file succeed open,!,否則屏幕顯示:,file can not open!,在上面的程序中,我們用絕對路徑的方法指定了要打開的文件??梢钥闯觯^對路徑可以定位到指定的目錄下,它是由包含路徑和文件名兩部分組成。例如:,D:file1.dat ,/*,表示,D,盤根目錄下的文件,file1.dat */,C:TC file2.dat,/*,表示,C,盤中,TC,文件夾里面的,file2.dat */,說明:在書寫文件的路徑時,要嚴格按照格式書寫,例如:路徑“,C:TCTEST.DAT”,應(yīng)該寫成,C:TCTEST.DAT”,,這一點要特別注意。,

    15、10.3,文件測試函數(shù),C,語言通過函數(shù),feof,(),來實現(xiàn)文件尾測試。,feof,(),函數(shù)的一般格式為:,int,feof(FILE,*,fp,),其中,,fp,表示一個文件型指針,如果當前是文件尾的話,返回一個非,0,的值,否則返回,0,。,通常在讀取文件中的數(shù)據(jù)時,都要事先利用該函數(shù)來判斷。不是文件尾則繼續(xù)讀取數(shù)據(jù),是文件尾則不能讀取數(shù)據(jù)。,10.4,文件的讀寫操作,10.4.1,字符讀寫函數(shù),10.4.2,數(shù)據(jù)讀寫函數(shù),10.4.3,字符串讀寫函數(shù),10.4.4,格式化讀寫函數(shù),10.4.5,其他讀寫函數(shù),10.4.1,字符讀寫函數(shù),1.,讀字符函數(shù),fgetc,函數(shù),2.,寫字

    16、符函數(shù),fputc,函數(shù),1.,讀字符函數(shù),fgetc,函數(shù),fgetc,函數(shù)用來從指定的文件讀入一個字符,該文件必須是以讀或?qū)懛绞酱蜷_的。,fgetc,函數(shù)的調(diào)用格式如下:,ch,=,fgetc(fp,);,其中,fp,為文件類型指針,,ch,為字符變量。,fgetc,函數(shù)返回的字符賦給字符變量,ch,。,如果在執(zhí)行,fgetc,函數(shù)讀字符時遇到文件結(jié)束符,則該函數(shù)返回一個結(jié)束標志,EOF(-1),。,如果想從磁盤文件順序讀入字符并在屏幕上顯示出來,可以用以下的程序段:,ch,=,fgetc(fp,);,while(ch,!=EOF),putchar(ch,);,ch,=,fgetc(fp,

    17、);,例,10.3,讀入,d:tc,目錄下的文件“,231001.c”,,并在顯示器上顯示出來。,#include,main(),FILE *,fp,;,char c;,if(fp,=fopen(d:tc231001.c,rt)=NULL),printf(n,Can not open file ,press any key exit!);,getch,();,/*,從鍵盤上任意輸入一字符,結(jié)束程序 *,/,exit(1);,c=,fgetc(fp,);,/*,從文件中逐個讀取字符 *,/,while(c,!=EOF) ,putchar(c,); c=,fgetc(fp,); ,/*,只要讀出的

    18、字符沒有到文件尾就把該字符顯示在屏幕上*,/,fclose(fp,);,如果文件,231001.c,中存放的內(nèi)容是文件類型指針的結(jié)構(gòu),則上述程序執(zhí)行完后輸出以下的內(nèi)容:,typedef,struct,short level;,unsigned flags;,char,fd,;,unsigned char hold;,short,bsize,;,unsigned char *buffer;,unsigned char *,curp,;,unsigned,istemp,;,short token;,FILE;,例,10.4,從目錄,d:tc,下名為“,231001.c”,的文本文件中讀取前,7,個

    19、字符,依次顯示在屏幕上。,#include ,main(), FILE *,fp,;,char,ch,;,int,i;,if(fp,=fopen(d:tc231001.c,r)=NULL),printf(n,Can not open file!);,exit(0); ,for(i,=0;i7;i+),if(feof(fp,) break;,/*,如果是文件尾,則退出循環(huán) *,/,ch,=,fgetc(fp,);,/*,從文件中讀一個字符 *,/,putchar(ch,);,/*,將讀取的字符顯示在屏幕上 *,/,fclose(fp,);,該程序最后的運行結(jié)果為:,typedef,2.,寫字符函

    20、數(shù),fputc,函數(shù),fputc,函數(shù)用來將一個字符寫入指定的文件中,該函數(shù)的調(diào)用格式為:,fputc(ch,fp,);,其中,ch,可以是一個字符常量,也可以是一個字符變量。,fp,是文件指針變量。,該函數(shù)的作用是將字符,(,ch,的值,),輸出到,fp,所指定的文件中去。,fputc,函數(shù)也帶回一個值,如果輸出成功則返回值就是輸出的字符,如果輸出失敗,則返回,EOF(-1),。,例,10.5,編程實現(xiàn):要求從鍵盤輸入一行字符,將其寫入文件,231001.c,(該文件在,d:tc,目錄下)中,然后把該文件的內(nèi)容讀出并顯示在屏幕上。,#include,main(), FILE *,fp,;,c

    21、har c1;,if(fp,=fopen(d:tc231001.c ,a+)=NULL),printf(Can,not open file, press any key exit!);,getchar,(); exit(1);,printf,( Please input a string:n);,c1=,getchar,();,while (c1!=n) fputc(c1,fp); c1=,getchar,(); ,rewind(fp,);,c1=,fgetc(fp,);,while(c1!=EOF) putchar(c1); c1=,fgetc(fp,); ,printf(n,);,fclo

    22、se(fp,);,上述程序的運行兩次的情況為:,Please input a string:,Happy New Year,!,typedef,struct,short level;,unsigned flags;,char,fd,;,unsigned char hold;,short,bsize,;,unsigned char *buffer;,unsigned char *,curp,;,unsigned,istemp,;,short token;,FILE;Happy,New Year,!,Please input a string:,Hello World,!,typedef,stru

    23、ct,short level;,unsigned flags;,char,fd,;,unsigned char hold;,short,bsize,;,unsigned char *buffer;,unsigned char *,curp,;,unsigned,istemp,;,short token;,FILE;Happy,New Year,!,Hello World!,10.4.2,數(shù)據(jù)讀寫函數(shù),1.,寫數(shù)據(jù)函數(shù),fwrite,函數(shù),2.,讀數(shù)據(jù)函數(shù),fread,函數(shù),1.,寫數(shù)據(jù)函數(shù),fwrite,函數(shù),寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:,fwrite(buffer,size,n,fp,);

    24、,其中各個參數(shù)的含義及說明如表,10-5,所示。,參數(shù),含義,說明,buffer,是一個字符型指針,它表示存放輸出數(shù)據(jù)的變量地址或數(shù)組首地址,size,是一個無符號整型,表示數(shù)據(jù)塊的字節(jié)數(shù),每個數(shù)據(jù)是,size,個字節(jié),n,無符號整型,表示要讀寫的數(shù)據(jù)塊塊數(shù),fp,表示文件指針,表,10-5,fwrite,函數(shù)中各個參數(shù)的含義及說明,例,10.6,從鍵盤上讀取,8,個字符數(shù)據(jù),寫入,D,盤下的名為“,231.txt”,(該文件的目錄為:,d:tc231.txt,)文本文件中。,#include,main(), FILE *,fp,;,char a8;,char *p=a;,if(fp,=fop

    25、en(d:tc231.txt,wb)=NULL),printf(n,Can not open file,!,n);,exit(0);,puts(“Please,input 8 characters:);,while(p,a+8),/*,從鍵盤讀入,8,個字符存入數(shù)組,a */,scanf(%d,p,+);,fwrite(a,sizeof(char),8,fp);,/*,將數(shù)組中的,8,個字符寫入,fp,指向的文件 *,/,fclose(fp,);,圖,10-1,文件,231.txt,的示意圖,程序的運行情況為:,Please input 8,characters:humanhao,回車后,文件

    26、,231.txt,的內(nèi)容如圖,10-1,所示:,2.,讀數(shù)據(jù)函數(shù),fread,函數(shù),讀數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:,fread(buffer,size,n,fp,);,其中的,buffer,是一個字符型指針,表示存放讀入數(shù)據(jù)的變量地址或數(shù)組首地址。,size,、,n,、,fp,的含義見表,10-5,。,例如:,fread(a,4,8,fp);,上述語句的含義是從,fp,所指的文件中,每次讀,4,個字節(jié),也就是把一個實數(shù)送入實數(shù)組,a,中,連續(xù)讀,8,次,即讀入,8,個實數(shù)并送到數(shù)組,a,中。,例,10.7,編程實現(xiàn):從,241.txt,(,d:tc241.txt,)文件中讀,10,個字符數(shù)據(jù),

    27、并把它們放到字符數(shù)組,a,中。,#include ,main(),int,i;,FILE *,fp,;,char a10;,fp,=fopen(d:tc241.txt , ,rb,);,/*,以只讀方式打開當前目錄下的,241.txt*/,if(fread(a,1,10,fp)!=10),/*,判斷是否讀了,10,字符數(shù)據(jù)*,/,if(feof(fp,),/*,沒有讀完,10,個字符時文件結(jié)束*,/,printf(End,of file);,else,printf(Read,error);,/*,讀數(shù)錯誤*,/,fclose(fp,);,/*,關(guān)閉文件*,/,for(i,=0;i10;i+),

    28、/*,輸出數(shù)組,a,中的數(shù)據(jù)*,/,printf(%c,ai,);,printf(n,);,如果,241.txt,中存放著若干個“,helloworld,”,的字符串,則程序運行后的輸出結(jié)果為:,helloworld,10.4.3,字符串讀寫函數(shù),1.,寫字符串函數(shù),fputs,2.,讀字符串函數(shù),fgets,1.,寫字符串函數(shù),fputs,fputs,函數(shù)的功能是向指定的文件寫入一個字符串,其調(diào)用形式為:,fputs,(,字符串,文件指針,);,字符串可以是字符串常量,也可以是字符數(shù)組名,或指針變量。,例如:,fputs(Human,fp,);,上述語句的含義是把字符串“,Human”,寫入

    29、,fp,所指的文件之中。,2.,讀字符串函數(shù),fgets,fgets,函數(shù)的功能是從指定的文件中讀一個字符串到字符數(shù)組中,其調(diào)用的一般形式為,:,fgets(str,n,fp,);,函數(shù)中的參數(shù),str,是字符數(shù)組名;,n,是一個正整數(shù),表示從文件中讀出的字符串,不超過,n-1,個字符,。,在向字符數(shù)組讀入的最后一個字符后加上字符串結(jié)束標志,0,。,如果在讀,n-1,個字符之前遇到換行符或,EOF,,讀入工作也結(jié)束,。,例如:,fgets(ch,50,fp);,/*,從,fp,所指的文件中讀出,49,個字符送入字符數(shù)組,ch,中*,/,例,10.8,編程實現(xiàn):從,d:tc,目錄中讀文本文件,2

    30、42.txt,中開始的,8,個字符,并輸出這,8,個字符組成的字符串。,#include,main(),int,i;,FILE *,fp,;,char a9;,if(fp,=fopen(d:tc242.txt,rt)=NULL),/*,以可讀可寫的方式打開文本文件,242.txt*/,printf(n,Can not open file!);,getch,();,exit(1);,fgets(a,9,fp);,/*,從,fp,所指文件中讀取,9-1,個字符送到數(shù)組,a,中*,/,printf(n%sn,a,);,/*,輸出數(shù)組,a,中的字符串的內(nèi)容*,/,fclose(fp,);,for(i,

    31、=0;i8;i+),/*,依次輸出數(shù)組,a,中的各個字符*,/,printf(%c,ai,);,printf(n,);,如果,242.txt,文件中存放著若干個“,goldhuman”,,則上述程序的運行結(jié)果為:,goldhuma,goldhuma,10.4.4,格式化讀寫函數(shù),1.,格式化寫函數(shù),fprintf,2.,格式化讀函數(shù),fscanf,1.,格式化寫函數(shù),fprintf,格式化寫函數(shù),fprintf,的調(diào)用格式為:,fprintf,(,文件指針,格式字符串,輸出表列,);,例如:,fprintf(fp,%d%c,j,ch,);,上述語句的作用是將整型變量,j,和字符型變量,ch,的

    32、值按,%d,和,%c,的格式送到,fp,指向的文件上。,2.,格式化讀函數(shù),fscanf,格式化讀函數(shù),fscanf,fscanf,(,文件指針,格式字符串,輸入表列,);,例如:,fscanf(fp,%d%s,&i,str,);,若此時,fp,所指的文件中存放著以下的數(shù)據(jù):,6happynewyear,則上述語句的作用是將,6,賦給整型變量,i,,將“,happynewyear,”,賦給字符型數(shù)組,str,。,例,10.9,從目錄“,d:tc,”,中讀取文本文件“,243.c”,,并將讀出的結(jié)果顯示在屏幕上。,#include,main(),char a10;,int,i;,FILE *,f

    33、p,;,fp,=fopen(d:tc243.txt, r);,/*,打開文本文件只讀*,/,fgets(a, 8,fp,);,/*,從文件中讀取,7,個字符*,/,printf(%s, a);,/*,輸出所讀的字符串*,/,fscanf(fp, %d, ,/*,讀取整型數(shù)*,/,printf(%d, i);,/*,輸出所讀整型數(shù)*,/,putchar(fgetc(fp,);,/*,讀取一個字符同時輸出*,/,fgets(a, 6,fp,);,/*,讀取,5,個字符*,/,puts(a,);,/*,輸出所讀字符串*,/,fclose(fp,);,/*,關(guān)閉文件*,/,getch,();,/*,等

    34、待任一鍵*,/,如果,243.txt,文件中存放的內(nèi)容是:,happyne6yeareveryone,則程序的運行結(jié)果為:,happyne6yearev,10.4.5,其他讀寫函數(shù),1.putw,函數(shù)的定義,2.getw,函數(shù)的定義,1.putw,函數(shù)的定義,putw(int,i,FILE,*,fp,),char *s;,s=,putc(s0,fp);,putc(s1,fp);,return (i);,2.getw,函數(shù)的定義,getw(FILE,*,fp,),char *s;,int,i;,s=,s0=,getc(fp,);,s1=,getc(fp,);,return(i,);,10.5,出

    35、錯的檢測,10.5.1ferror,函數(shù),10.5.2,clearerr,函數(shù),10.5.1,ferror,函數(shù),ferror,函數(shù)的調(diào)用格式為:,ferror(fp,);,其中的,fp,是指向文件的指針,當,ferror,函數(shù)的返回值為非零時,表示出錯;,當其返回值為零時表示沒有發(fā)生錯誤。,10.5.2,clearerr,函數(shù),clearerr,函數(shù)的功能是,使文件錯誤標志和結(jié)束標志置零,。其調(diào)用格式為:,clearerr(fp,);,其中的,fp,為文件指針。,例如:在調(diào)用一個輸入,/,輸出函數(shù)出錯時,,ferror,函數(shù)返回了非零值,在執(zhí)行以下語句:,clearerr(fp,);,后,,

    36、ferror(fp,),的返回值變成了零。,10.6,文件的隨機讀寫操作,10.6.1.,文件頭定位函數(shù),10.6.2.,文件隨機定位函數(shù),10.6.3.,流式文件的定位函數(shù),10.6.1.,文件頭定位函數(shù),C,提供的文件頭定位函數(shù),rewind,可以將文件指針重新指定到文件頭。該函數(shù)的調(diào)用格式為:,rewind(,文件指針,);,其功能是把文件內(nèi)部的位置指針移到文件開頭,,如果定位成功,返回,0,;否則,返回非,0,。,10.6.2.,文件隨機定位函數(shù),fseek,函數(shù)用來移動文件內(nèi)部位置指針,其調(diào)用形式為:,fseek,(,文件指針,位移量,起始點,);,其中: “文件指針”指向被移動的文

    37、件。 “位移量”表示移動的字節(jié)數(shù),要求位移量是,long,型數(shù)據(jù),以便在文件長度大于,64KB,時不會出錯。當用常量表示位移量時,要求加后綴“,L”,。,“起始點”表示從何處開始計算位移量,,C,語言規(guī)定的起始點有三種:文件首、當前位置和文件尾,表示方法可以用表,10-6,來說明。,起始點,表示符號,數(shù)字表示,文件首,SEEK_SET,0,當前位置,SEEK_CUR,1,文件末尾,SEEK_END,2,表,10-6,起始點的表示方法,例如:,fseek(fp,200L,0);,上述語句的功能是把位置指針移到離文件首,200,個字節(jié)處。,3.,流式文件的定位函數(shù),用,ftell,(),函數(shù)可以返回文件指針的當前位置。其調(diào)用格式為:,ftell(fp,);,該函數(shù)的返回值為長整型數(shù),表示相對于文件頭的字節(jié)數(shù),出錯時返回,-1L,。,例如:,long i;,if(i,=,ftell(fp,)=-1L),printf(A,file error has occurred at %ld.,n,i,);,上述程序段可以通知用戶在文件的什么位置出現(xiàn)了文件錯誤。,本資料由,-,校園大學(xué)生創(chuàng)業(yè)網(wǎng),-,提供,http:/,/,在線代理,http:/,/,提供部分資料,

    展開閱讀全文
    溫馨提示:
    1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
    2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
    3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
    4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
    5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
    6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
    7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

    備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


    本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>