<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>
  • 歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
    裝配圖網(wǎng)
    ImageVerifierCode 換一換
    首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

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

    • 資源ID:248219406       資源大?。?span id="jubf8nt" class="font-tahoma">625KB        全文頁數(shù):62頁
    • 資源格式: PPT        下載積分:10積分
    快捷下載 游客一鍵下載
    會(huì)員登錄下載
    微信登錄下載
    三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
    二維碼
    微信掃一掃登錄
    下載資源需要10積分
    郵箱/手機(jī):
    溫馨提示:
    用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
    支付方式: 支付寶    微信支付   
    驗(yàn)證碼:   換一換

     
    賬號(hào):
    密碼:
    驗(yàn)證碼:   換一換
      忘記密碼?
        
    友情提示
    2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
    3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
    4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
    5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

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

    單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,第,10,章 文件,本資料由,-,校園大學(xué)生創(chuàng)業(yè)網(wǎng),-,提供,http:/,/,在線代理,http:/,/,提供部分資料,第,10,章 文件,10.1,文件的概述,10.2,文件的打開與關(guān)閉,10.3,文件測(cè)試函數(shù),10.4,文件的讀寫操作,10.5,出錯(cuò)的檢測(cè),10.6,文件的隨機(jī)讀寫操作,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.,二進(jìn)制文件,1.,文本文件,文本文件,也稱,ASCII,文件,是一種字符流文件。,文件由一個(gè)個(gè)字符首尾相接而成,其中每個(gè)字符占,1,字節(jié),存放的是字符的,ASCII,碼。,文本文件的優(yōu)點(diǎn)是可以直接閱讀,而且,ASCII,代碼標(biāo)準(zhǔn)統(tǒng)一,使文件易于移植。,其缺點(diǎn)是輸入,/,輸出都要進(jìn)行轉(zhuǎn)換,效率低。,2.,二進(jìn)制文件,二進(jìn)制文件中的數(shù)據(jù)是按其在內(nèi)存中的存儲(chǔ)形式存放的。,由于二進(jìn)制文件在輸入輸出時(shí),不必進(jìn)行轉(zhuǎn)換,故效率高。,但二進(jìn)制文件只能供機(jī)器閱讀,人工無法閱讀,也不能打印。而且,由于不同的計(jì)算機(jī)系統(tǒng)對(duì)數(shù)據(jù)的二進(jìn)制表示也各有差異,因此,可移植性差。,一般用二進(jìn)制文件來保存數(shù)據(jù)處理的中間結(jié)果。,10.1.2,文件的存取方式,1.,順序存取和隨機(jī)存取,2.,順序文件和隨機(jī)文件,1.,順序存取和隨機(jī)存取,順序存取是指只能依先后次序存取文件中的數(shù)據(jù)。,例如,:,在流式文件中,存取完第一字節(jié),才能存取第二字節(jié);存取完第,n-1,字節(jié),才能存取第,n,字節(jié)。,隨機(jī)存取也稱直接存取,可以直接存取文件中指定的數(shù)據(jù)。,例如:在流式文件中,可以直接存取指定的第,i,個(gè)字節(jié),(,或字符,),,而不管第,i-1,字節(jié)是否已經(jīng)存取。,2.,順序文件和隨機(jī)文件,可以進(jìn)行順序存取的文件稱為順序文件。,在順序文件中,記錄的邏輯順序和物理順序相同。,記錄可以不等長(zhǎng)。,讀出某一條記錄的速度慢,不能直接對(duì)文件進(jìn)行修改,適宜于對(duì)文件順序批量處理。,可以進(jìn)行隨機(jī)存取的文件稱為隨機(jī)文件。,在隨機(jī)文件中,每條記錄等長(zhǎng),各數(shù)據(jù)項(xiàng)長(zhǎng)度固定,每個(gè)記錄有惟一的記錄號(hào)。,讀寫文件時(shí),按記錄號(hào)直接讀寫指定的記錄,適宜于隨機(jī)讀寫某條記錄的操作。,10.1.3,流和文件,C,語言為程序員和用戶的設(shè)備之間提供了一層抽象的東西,這一層抽象的東西就稱之為“流”,而將具體的實(shí)際設(shè)備叫做文件。,流是一個(gè)邏輯設(shè)備,其具有諸多相同的行為。因此,用來進(jìn)行磁盤文件寫的函數(shù)也同樣可以用來進(jìn)行打印機(jī)的寫入。,在,C,中有兩種性質(zhì)的流:文字流和二進(jìn)制流。,10.1.4,文件指針類型,文件指針類型,FILE,是一個(gè)新的數(shù)據(jù)類型。它是,C,語言基本數(shù)據(jù)類型的集合,稱之為“文件結(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");,上述語句的含義是在當(dāng)前目錄下打開文件“,file1”,,并使,fp,指向該文件。,語句中的字母“,r”,是文件打開方式,表示只能對(duì)該文件進(jìn)行“讀”操作。,10.1.5,文件操作的步驟,在,Turbo C 2.0,中,所有與文件操作有關(guān)的庫函數(shù)都保存在標(biāo)題文件,stdio.h,中。,文件的創(chuàng)建和使用都需要由程序完成,一般要經(jīng)過以下三個(gè)步驟:,(,1,)打開文件。用標(biāo)準(zhǔn)庫函數(shù),fopen,(),打開文件,它通知編譯系統(tǒng)三個(gè)信息:需要打開的文件名;使用文件的方式,(,讀還是寫等,),;使用的文件指針。,(,2,)文件讀寫。用文件輸入,/,輸出函數(shù)對(duì)文件進(jìn)行讀寫,這些輸入輸出函數(shù)與前面介紹的標(biāo)準(zhǔn)輸入輸出函數(shù)在功能上有相似之處,但使用上又不盡相同。,(,3,)關(guān)閉文件。文件讀寫完畢,用標(biāo)準(zhǔn)函數(shù),fclose,(),將文件關(guān)閉。它的功能是把數(shù)據(jù)真正寫入磁盤,(,否則數(shù)據(jù)可能還在緩沖區(qū)中,),,切斷文件指針與文件名之間的聯(lián)系,釋放文件指針。如不關(guān)閉則多半會(huì)丟失數(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/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,用來打開一個(gè)文件,其調(diào)用的一般形式為:,文件指針名,=,fopen,(,文件名,使用文件方式,);,其中:“文件指針名”必須是被說明為,FILE,類型的指針變量;“文件名”是被打開文件的文件名,文件名通常是,文件變量或文件數(shù)組,;“使用文件方式”是指文件的類型和操作要求。,文件使用方式,代表的含義,“,r”,打開一個(gè)已有的文本文件,只允許讀取數(shù)據(jù),“,w”,打開或建立一個(gè)文本文件,只允許寫入數(shù)據(jù),“,at”,打開一個(gè)已有的文本文件,并在文件末尾寫數(shù)據(jù),“,rt,+”,打開一個(gè)已有的文本文件,允許讀和寫,“,at+”,打開一個(gè)已有的文本文件,允許讀或在文件末追加數(shù)據(jù),“,wt+”,打開或建立一個(gè)文本文件,允許讀寫,表,10-2,文本文件的符號(hào)及其含義,文件的使用方式共有,12,種,表,10-2,給出了文本文件的符號(hào)和意義。,文件使用方式,代表的含義,“,rb,”,打開一個(gè)已存在的二進(jìn)制文件,只允許讀數(shù)據(jù),“,wb,”,打開或建立一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù),“,ab,”,打開一個(gè)二進(jìn)制文件,并在文件末尾追加數(shù)據(jù),“,rb,+”,打開一個(gè)二進(jìn)制文件,允許讀和寫,“,wb,+”,打開或建立一個(gè)二進(jìn)制文件,允許讀和寫,“,ab,+”,打開一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù),表,10-3,二進(jìn)制文件的符號(hào)及其含義,下面的表,10-3,介紹的另外六種文件的操作方式是針對(duì)“二進(jìn)制文件”類型的。,字母,代表,含義,r,read,讀取數(shù)據(jù),w,write,寫入數(shù)據(jù),a,append,追加數(shù)據(jù),t,text,文本文件,可省略不寫,b,binary,二進(jìn)制文件,+,可讀可寫,表,10-4,文件使用方式中的字符及含義,文件使用方式由,r,、,w,、,a,、,t,、,b,和,+,六個(gè)字符組成,各字符的含義如表,10-4,所示。,10.2.2,文件的關(guān)閉,文件使用完畢后,應(yīng)使用關(guān)閉文件函數(shù),fclose,把文件關(guān)閉,以避免文件數(shù)據(jù)丟失等情況的發(fā)生。,fclose,函數(shù)調(diào)用的一般形式為:,fclose,(,FILE *,fp,),其中,參數(shù),fp,是文件型指針,通過,fopen,(),函數(shù)已經(jīng)獲得,它指向某個(gè)打開的文件。例如:,fclose(fp,) ;/*,關(guān)閉,fp,所指向的文件*,/,當(dāng)正常完成關(guān)閉文件的操作時(shí),,fclose,函數(shù)的返回值為,0,,表示已正確關(guān)閉指定的文件,;,如返回非零值則表示有錯(cuò)誤發(fā)生。,例,10.1,文件的打開與關(guān)閉應(yīng)用舉例一。,#include <,stdio.h,>,main(), FILE *,fp,;,/*,定義一個(gè)文件指針*,/,int,n;,fp,=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)閉不成功*,/,運(yùn)行程序,如果成功將文件打開,則屏幕顯示如下:,The file succeed close,否則屏幕顯示:,Sorry,file,open error,The file close error,例,10.2,文件的打開與關(guān)閉應(yīng)用舉例二。,#include <,stdio.h,>,main(), FILE *,fp,;,/*,定義一個(gè)文件指針*,/,if(fp,=fopen("d:tc231001.c", ",rb,“)=NULL),printf("file,can not open!n");,exit(0);,/*,關(guān)閉所有文件,終止程序運(yùn)行*,/,else,printf,(“ The file succeed open!n");,/*,提示文件成功打開 *,/,fclose(fp,);,運(yùn)行程序,如果成功將文件打開,,則屏幕顯示如下:,The file succeed open,!,否則屏幕顯示:,file can not open!,在上面的程序中,我們用絕對(duì)路徑的方法指定了要打開的文件??梢钥闯?,絕對(duì)路徑可以定位到指定的目錄下,它是由包含路徑和文件名兩部分組成。例如:,"D:file1.dat ",/*,表示,D,盤根目錄下的文件,file1.dat */,"C:TC file2.dat",/*,表示,C,盤中,TC,文件夾里面的,file2.dat */,說明:在書寫文件的路徑時(shí),要嚴(yán)格按照格式書寫,例如:路徑“,C:TCTEST.DAT”,應(yīng)該寫成,C:TCTEST.DAT”,,這一點(diǎn)要特別注意。,10.3,文件測(cè)試函數(shù),C,語言通過函數(shù),feof,(),來實(shí)現(xiàn)文件尾測(cè)試。,feof,(),函數(shù)的一般格式為:,int,feof(FILE,*,fp,),其中,,fp,表示一個(gè)文件型指針,如果當(dāng)前是文件尾的話,返回一個(gè)非,0,的值,否則返回,0,。,通常在讀取文件中的數(shù)據(jù)時(shí),都要事先利用該函數(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.,寫字符函數(shù),fputc,函數(shù),1.,讀字符函數(shù),fgetc,函數(shù),fgetc,函數(shù)用來從指定的文件讀入一個(gè)字符,該文件必須是以讀或?qū)懛绞酱蜷_的。,fgetc,函數(shù)的調(diào)用格式如下:,ch,=,fgetc(fp,);,其中,fp,為文件類型指針,,ch,為字符變量。,fgetc,函數(shù)返回的字符賦給字符變量,ch,。,如果在執(zhí)行,fgetc,函數(shù)讀字符時(shí)遇到文件結(jié)束符,則該函數(shù)返回一個(gè)結(jié)束標(biāo)志,EOF(-1),。,如果想從磁盤文件順序讀入字符并在屏幕上顯示出來,可以用以下的程序段:,ch,=,fgetc(fp,);,while(ch,!=EOF),putchar(ch,);,ch,=,fgetc(fp,);,例,10.3,讀入,d:tc,目錄下的文件“,231001.c”,,并在顯示器上顯示出來。,#include<,stdio.h,>,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,);,/*,從文件中逐個(gè)讀取字符 *,/,while(c,!=EOF) ,putchar(c,); c=,fgetc(fp,); ,/*,只要讀出的字符沒有到文件尾就把該字符顯示在屏幕上*,/,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,個(gè)字符,依次顯示在屏幕上。,#include <,stdio.h,>,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;i<7;i+),if(feof(fp,) break;,/*,如果是文件尾,則退出循環(huán) *,/,ch,=,fgetc(fp,);,/*,從文件中讀一個(gè)字符 *,/,putchar(ch,);,/*,將讀取的字符顯示在屏幕上 *,/,fclose(fp,);,該程序最后的運(yùn)行結(jié)果為:,typedef,2.,寫字符函數(shù),fputc,函數(shù),fputc,函數(shù)用來將一個(gè)字符寫入指定的文件中,該函數(shù)的調(diào)用格式為:,fputc(ch,fp,);,其中,ch,可以是一個(gè)字符常量,也可以是一個(gè)字符變量。,fp,是文件指針變量。,該函數(shù)的作用是將字符,(,ch,的值,),輸出到,fp,所指定的文件中去。,fputc,函數(shù)也帶回一個(gè)值,如果輸出成功則返回值就是輸出的字符,如果輸出失敗,則返回,EOF(-1),。,例,10.5,編程實(shí)現(xiàn):要求從鍵盤輸入一行字符,將其寫入文件,231001.c,(該文件在,d:tc,目錄下)中,然后把該文件的內(nèi)容讀出并顯示在屏幕上。,#include<,stdio.h,>,main(), FILE *,fp,;,char 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,");,fclose(fp,);,上述程序的運(yùn)行兩次的情況為:,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,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,!,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,);,其中各個(gè)參數(shù)的含義及說明如表,10-5,所示。,參數(shù),含義,說明,buffer,是一個(gè)字符型指針,它表示存放輸出數(shù)據(jù)的變量地址或數(shù)組首地址,size,是一個(gè)無符號(hào)整型,表示數(shù)據(jù)塊的字節(jié)數(shù),每個(gè)數(shù)據(jù)是,size,個(gè)字節(jié),n,無符號(hào)整型,表示要讀寫的數(shù)據(jù)塊塊數(shù),fp,表示文件指針,表,10-5,fwrite,函數(shù)中各個(gè)參數(shù)的含義及說明,例,10.6,從鍵盤上讀取,8,個(gè)字符數(shù)據(jù),寫入,D,盤下的名為“,231.txt”,(該文件的目錄為:,d:tc231.txt,)文本文件中。,#include<,stdio.h,>,main(), FILE *,fp,;,char a8;,char *p=a;,if(fp,=fopen("d:tc231.txt","wb")=NULL),printf("n,Can not open file,!,n");,exit(0);,puts(“Please,input 8 characters:");,while(p,<a+8),/*,從鍵盤讀入,8,個(gè)字符存入數(shù)組,a */,scanf("%d",p,+);,fwrite(a,sizeof(char),8,fp);,/*,將數(shù)組中的,8,個(gè)字符寫入,fp,指向的文件 *,/,fclose(fp,);,圖,10-1,文件,231.txt,的示意圖,程序的運(yùn)行情況為:,Please input 8,characters:humanhao,回車后,文件,231.txt,的內(nèi)容如圖,10-1,所示:,2.,讀數(shù)據(jù)函數(shù),fread,函數(shù),讀數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:,fread(buffer,size,n,fp,);,其中的,buffer,是一個(gè)字符型指針,表示存放讀入數(shù)據(jù)的變量地址或數(shù)組首地址。,size,、,n,、,fp,的含義見表,10-5,。,例如:,fread(a,4,8,fp);,上述語句的含義是從,fp,所指的文件中,每次讀,4,個(gè)字節(jié),也就是把一個(gè)實(shí)數(shù)送入實(shí)數(shù)組,a,中,連續(xù)讀,8,次,即讀入,8,個(gè)實(shí)數(shù)并送到數(shù)組,a,中。,例,10.7,編程實(shí)現(xiàn):從,241.txt,(,d:tc241.txt,)文件中讀,10,個(gè)字符數(shù)據(jù),并把它們放到字符數(shù)組,a,中。,#include <,stdio.h,>,main(),int,i;,FILE *,fp,;,char a10;,fp,=fopen("d:tc241.txt ", ",rb,");,/*,以只讀方式打開當(dāng)前目錄下的,241.txt*/,if(fread(a,1,10,fp)!=10),/*,判斷是否讀了,10,字符數(shù)據(jù)*,/,if(feof(fp,),/*,沒有讀完,10,個(gè)字符時(shí)文件結(jié)束*,/,printf("End,of file");,else,printf("Read,error");,/*,讀數(shù)錯(cuò)誤*,/,fclose(fp,);,/*,關(guān)閉文件*,/,for(i,=0;i<10;i+),/*,輸出數(shù)組,a,中的數(shù)據(jù)*,/,printf("%c",ai,);,printf("n,");,如果,241.txt,中存放著若干個(gè)“,helloworld,”,的字符串,則程序運(yùn)行后的輸出結(jié)果為:,helloworld,10.4.3,字符串讀寫函數(shù),1.,寫字符串函數(shù),fputs,2.,讀字符串函數(shù),fgets,1.,寫字符串函數(shù),fputs,fputs,函數(shù)的功能是向指定的文件寫入一個(gè)字符串,其調(diào)用形式為:,fputs,(,字符串,文件指針,);,字符串可以是字符串常量,也可以是字符數(shù)組名,或指針變量。,例如:,fputs("Human",fp,);,上述語句的含義是把字符串“,Human”,寫入,fp,所指的文件之中。,2.,讀字符串函數(shù),fgets,fgets,函數(shù)的功能是從指定的文件中讀一個(gè)字符串到字符數(shù)組中,其調(diào)用的一般形式為,:,fgets(str,n,fp,);,函數(shù)中的參數(shù),str,是字符數(shù)組名;,n,是一個(gè)正整數(shù),表示從文件中讀出的字符串,不超過,n-1,個(gè)字符,。,在向字符數(shù)組讀入的最后一個(gè)字符后加上字符串結(jié)束標(biāo)志,',0,',。,如果在讀,n-1,個(gè)字符之前遇到換行符或,EOF,,讀入工作也結(jié)束,。,例如:,fgets(ch,50,fp);,/*,從,fp,所指的文件中讀出,49,個(gè)字符送入字符數(shù)組,ch,中*,/,例,10.8,編程實(shí)現(xiàn):從,d:tc,目錄中讀文本文件,242.txt,中開始的,8,個(gè)字符,并輸出這,8,個(gè)字符組成的字符串。,#include<,stdio.h,>,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,個(gè)字符送到數(shù)組,a,中*,/,printf("n%sn",a,);,/*,輸出數(shù)組,a,中的字符串的內(nèi)容*,/,fclose(fp,);,for(i,=0;i<8;i+),/*,依次輸出數(shù)組,a,中的各個(gè)字符*,/,printf("%c",ai,);,printf("n,");,如果,242.txt,文件中存放著若干個(gè)“,goldhuman”,,則上述程序的運(yùn)行結(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,的值按,%d,和,%c,的格式送到,fp,指向的文件上。,2.,格式化讀函數(shù),fscanf,格式化讀函數(shù),fscanf,fscanf,(,文件指針,格式字符串,輸入表列,);,例如:,fscanf(fp,"%d%s",&i,str,);,若此時(shí),fp,所指的文件中存放著以下的數(shù)據(jù):,6happynewyear,則上述語句的作用是將,6,賦給整型變量,i,,將“,happynewyear,”,賦給字符型數(shù)組,str,。,例,10.9,從目錄“,",d:tc,”,中讀取文本文件“,243.c”,,并將讀出的結(jié)果顯示在屏幕上。,#include<,stdio.h,>,main(),char a10;,int,i;,FILE *,fp,;,fp,=fopen(""d:tc243.txt", "r");,/*,打開文本文件只讀*,/,fgets(a, 8,fp,);,/*,從文件中讀取,7,個(gè)字符*,/,printf("%s,", a);,/*,輸出所讀的字符串*,/,fscanf(fp, "%d", ,/*,讀取整型數(shù)*,/,printf("%d,", i);,/*,輸出所讀整型數(shù)*,/,putchar(fgetc(fp,);,/*,讀取一個(gè)字符同時(shí)輸出*,/,fgets(a, 6,fp,);,/*,讀取,5,個(gè)字符*,/,puts(a,);,/*,輸出所讀字符串*,/,fclose(fp,);,/*,關(guān)閉文件*,/,getch,();,/*,等待任一鍵*,/,如果,243.txt,文件中存放的內(nèi)容是:,happyne6yeareveryone,則程序的運(yùn)行結(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,出錯(cuò)的檢測(cè),10.5.1ferror,函數(shù),10.5.2,clearerr,函數(shù),10.5.1,ferror,函數(shù),ferror,函數(shù)的調(diào)用格式為:,ferror(fp,);,其中的,fp,是指向文件的指針,當(dāng),ferror,函數(shù)的返回值為非零時(shí),表示出錯(cuò);,當(dāng)其返回值為零時(shí)表示沒有發(fā)生錯(cuò)誤。,10.5.2,clearerr,函數(shù),clearerr,函數(shù)的功能是,使文件錯(cuò)誤標(biāo)志和結(jié)束標(biāo)志置零,。其調(diào)用格式為:,clearerr(fp,);,其中的,fp,為文件指針。,例如:在調(diào)用一個(gè)輸入,/,輸出函數(shù)出錯(cuò)時(shí),,ferror,函數(shù)返回了非零值,在執(zhí)行以下語句:,clearerr(fp,);,后,,ferror(fp,),的返回值變成了零。,10.6,文件的隨機(jī)讀寫操作,10.6.1.,文件頭定位函數(shù),10.6.2.,文件隨機(jī)定位函數(shù),10.6.3.,流式文件的定位函數(shù),10.6.1.,文件頭定位函數(shù),C,提供的文件頭定位函數(shù),rewind,可以將文件指針重新指定到文件頭。該函數(shù)的調(diào)用格式為:,rewind(,文件指針,);,其功能是把文件內(nèi)部的位置指針移到文件開頭,,如果定位成功,返回,0,;否則,返回非,0,。,10.6.2.,文件隨機(jī)定位函數(shù),fseek,函數(shù)用來移動(dòng)文件內(nèi)部位置指針,其調(diào)用形式為:,fseek,(,文件指針,位移量,起始點(diǎn),);,其中: “文件指針”指向被移動(dòng)的文件。 “位移量”表示移動(dòng)的字節(jié)數(shù),要求位移量是,long,型數(shù)據(jù),以便在文件長(zhǎng)度大于,64KB,時(shí)不會(huì)出錯(cuò)。當(dāng)用常量表示位移量時(shí),要求加后綴“,L”,。,“起始點(diǎn)”表示從何處開始計(jì)算位移量,,C,語言規(guī)定的起始點(diǎn)有三種:文件首、當(dāng)前位置和文件尾,表示方法可以用表,10-6,來說明。,起始點(diǎn),表示符號(hào),數(shù)字表示,文件首,SEEK_SET,0,當(dāng)前位置,SEEK_CUR,1,文件末尾,SEEK_END,2,表,10-6,起始點(diǎn)的表示方法,例如:,fseek(fp,200L,0);,上述語句的功能是把位置指針移到離文件首,200,個(gè)字節(jié)處。,3.,流式文件的定位函數(shù),用,ftell,(),函數(shù)可以返回文件指針的當(dāng)前位置。其調(diào)用格式為:,ftell(fp,);,該函數(shù)的返回值為長(zhǎng)整型數(shù),表示相對(duì)于文件頭的字節(jié)數(shù),出錯(cuò)時(shí)返回,-1L,。,例如:,long i;,if(i,=,ftell(fp,)=-1L),printf("A,file error has occurred at %ld.,n",i,);,上述程序段可以通知用戶在文件的什么位置出現(xiàn)了文件錯(cuò)誤。,本資料由,-,校園大學(xué)生創(chuàng)業(yè)網(wǎng),-,提供,http:/,/,在線代理,http:/,/,提供部分資料,

    注意事項(xiàng)

    本文(《C 語言程序設(shè)計(jì)》第10章)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

    溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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