版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章數(shù)組
11.1文件的概念11.2文件的打開與關(guān)閉11.3文件的字符輸入與輸出11.4文件的字符串輸入與輸出11.5文件的格式化輸入與輸出第十一章文件關(guān)鍵字文件文件指針讀寫
在前面章節(jié)中我們學(xué)過一些函數(shù)如:printf()、scanf()getchar()putchar()函數(shù),它們是通過輸入輸出設(shè)備在程序中進(jìn)行數(shù)據(jù)的輸入和輸出。但是利用它們,數(shù)據(jù)從鍵盤輸入到內(nèi)存,只能存放在變量等的內(nèi)存單元中,只能在顯示器上顯示。一旦退出系統(tǒng)或關(guān)機(jī),就將不存在。為了使數(shù)據(jù)能長期保存,我們就必須把它保存在磁盤上,這就需要文件。C語言能夠處理什么樣的文件?對于磁盤上的文件如何處理?本章將著重講述文件的概念、文件的打開和關(guān)閉,有關(guān)文件的常用的讀寫函數(shù)等。11.1文件的概念一、文件的分類1、從用戶觀點(diǎn):特殊文件(標(biāo)準(zhǔn)輸入輸出文件或標(biāo)準(zhǔn)設(shè)備文件)。普通文件(磁盤文件)。2、從操作系統(tǒng)的角度看,每一個與主機(jī)相連的輸入輸出設(shè)備看作是一個文件。例:輸入文件:終端鍵盤輸出文件:顯示屏和打印機(jī)3、按數(shù)據(jù)的組織形式:ASCII文件(文本文件):每一個字節(jié)放一個ASCII代碼二進(jìn)制文件:把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。二、文件指針在C語言中用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進(jìn)行各種操作。用FILE類型可以定義文件類型指針。定義說明文件指針的一般形式為:
FILE*指針變量標(biāo)識符;其中FILE應(yīng)為大寫,在編寫源程序時不必關(guān)心FILE結(jié)構(gòu)的細(xì)節(jié)。例如:FILE*fp;表示fp是指向FILE結(jié)構(gòu)的指針變量,通過fp
即可找到存放某個文件信息的結(jié)構(gòu)變量,然后按結(jié)構(gòu)變量提供的信息找到該文件,實(shí)施對文件的操作。文件在進(jìn)行讀寫操作之前要先打開,使用完畢要關(guān)閉。所謂打開文件,實(shí)際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其它操作。關(guān)閉文件則斷開指針與文件之間的聯(lián)系,也就禁止再對該文件進(jìn)行操作。在C語言中,文件操作都是由庫函數(shù)來完成的。在本章內(nèi)將介紹文件的打開、關(guān)閉以及主要的文件操作函數(shù)等。11.2文件的打開與關(guān)閉
1、文件打開函數(shù)fopen
fopen函數(shù)用來打開一個文件,其調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式)說明:“文件指針名”必須是被說明為FILE類型的指針變量,“文件名”是被打開文件的文件名?!笆褂梦募绞健笔侵肝募念愋秃筒僮饕蟆!拔募笔亲址A炕蜃址?dāng)?shù)組。例如:FILE*fp;
fp=fopen("filea","r");其意義是在當(dāng)前目錄下打開文件filea,只允許進(jìn)行“讀”操作,并使fp指向該文件。
文件使用方式意義"rt"只讀打開一個文本文件,只允許讀數(shù)據(jù)"wt"只寫打開或建立一個文本文件,只允許寫數(shù)據(jù)"at"追加打開一個文本文件,并在文件末尾寫數(shù)據(jù)"rb"只讀打開一個二進(jìn)制文件,只允許讀數(shù)據(jù)"wb"只寫打開或建立一個二進(jìn)制文件,只允許寫數(shù)據(jù)"ab"追加打開一個二進(jìn)制文件,并在文件末尾寫數(shù)據(jù)"rt+"讀寫打開一個文本文件,允許讀和寫"wt+"讀寫建立一個文本文件,允許讀寫"at+"讀寫打開一個文本文件,允許讀,或在文件末追加數(shù)據(jù)"rb+“讀寫打開一個二進(jìn)制文件,允許讀和寫"wb+"讀寫建立一個新二進(jìn)制文件,允許讀和寫“ab+”讀寫打開一個二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)2、文件的關(guān)閉文件一旦使用完畢,應(yīng)用關(guān)閉文件函數(shù)fclose把文件關(guān)閉,以避免發(fā)生文件的數(shù)據(jù)丟失等錯誤。
fclose函數(shù)調(diào)用的一般形式是:fclose(文件指針);
例如:
fclose(fp);正常完成關(guān)閉文件操作時,fclose函數(shù)返回值為0。如返回非零值則表示有錯誤發(fā)生。對文件的讀和寫是最常用的文件操作。11.3文件的字符輸入與輸出在C語言中提供了多種文件讀寫的函數(shù):字符讀寫函數(shù):fgetc和fputc字符串讀寫函數(shù):fgets和fputs格式化讀寫函數(shù):fscanf和fprinf值得注意的是,使用以上函數(shù)之前應(yīng)包含頭文件stdio.h1、讀字符函數(shù)fgetc
fgetc函數(shù)的功能是從指定的文件中讀一個字符,函數(shù)調(diào)用的形式為:字符變量=fgetc(文件指針);例如:ch=fgetc(fp);其意義是從打開的文件fp中讀取一個字符并送入ch中程序(讀入文件e11-1.c,在屏幕上輸出)#include<stdio.h>main(){FILE*fp;charch;if((fp=fopen("e11_1.c","rt"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}fclose(fp);}二、寫字符函數(shù)fputcfputc函數(shù)的功能是把一個字符寫入指定的文件中,函數(shù)調(diào)用的形式為:fputc(字符量,文件指針);其中,待寫入的字符量可以是字符常量或變量,例如:fputc(‘a(chǎn)’,fp);其意義是把字符a寫入fp所指向的文件中。【程序】從鍵盤輸入一行字符,寫入一個文件,再把該文件內(nèi)容讀出顯示在屏幕上。#include<stdio.h>main(){FILE*fp;charch;if((fp=fopen("string","wt+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}printf("inputastring:\n");ch=getchar();while(ch!='\n'){fputc(ch,fp);ch=getchar();}rewind(fp);ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}printf("\n");fclose(fp);}11.4文件的字符串輸入與輸出一、讀字符串函數(shù)fgets功能是從指定的文件中讀一個字符串到字符數(shù)組中。函數(shù)調(diào)用的形式為:fgets(字符數(shù)組名,n,文件指針);其中n是一個正整數(shù)。表示從文件中讀出的字符串不超過n-1個字符。在讀入的最后一個字符后加上串結(jié)束標(biāo)志‘\0’。例如:fgets(str,n,fp);的意義是從fp所指的文件中讀出n-1個字符送入字符數(shù)組str中。【程序】從e11_1.c文件中讀入一個含10個字符的字符串。#include<stdio.h>main(){FILE*fp;charstr[11];if((fp=fopen("e11_1.c","rt"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}fgets(str,11,fp);printf("%s",str);fclose(fp);}二、寫字符串函數(shù)fputs
功能是向指定的文件寫入一個字符串調(diào)用形式:fputs(字符串,文件指針)其中字符串可以是字符串常量,也可以是字符數(shù)組名,或指針變量,例如:fputs(“abcd“,fp);其意義是把字符串“abcd”寫入fp所指的文件之中。11.5文件的格式化輸入與輸出fscanf函數(shù),fprintf函數(shù)與前面使用的scanf和printf
函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩者的區(qū)別在于fscanf
函數(shù)和fprintf函數(shù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。這兩個函數(shù)的調(diào)用格式為:fscanf(文件指針,格式字符串,輸入表列);fprintf(文件指針,格式字符串,輸出表列);例如:fscanf(fp,"%d%s",&i,s);/*從fp指向的文件中讀取的數(shù)據(jù)分別放在i和s指向的內(nèi)存中*/fprintf(fp,"%d%c",j,ch);/*將j和ch中的數(shù)據(jù)存入fp指向的文件中*/【程序】從鍵盤輸入兩個學(xué)生數(shù)據(jù),寫入一個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏幕上。#include<stdio.h>struct
stu{charname[10];intnum;intage;charaddr[15];}boya[2],boyb[2],*pp,*qq;main(){FILE*fp;charch;inti;pp=boya;qq=boyb;if((fp=fopen("stu_list","wb+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}printf("\ninputdata\n");for(i=0;i<2;i++,pp++)scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);pp=boya;for(i=0;i<2;i++,pp++)fprintf(fp,"%s%d%d%s\n",pp->name,pp->num,pp->age,pp->addr);rewind(fp);for(i=0;i<2;i++,qq++)fscanf(fp,"%s%d%d%s\n",qq->name,&qq->num,&qq->age,qq->addr);printf("\n\nname\tnumberageaddr\n");qq=boyb;for(i=0;i<2;i++,qq++)printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);fclose(fp);}程序中fscanf和fprintf函數(shù)每次只能讀寫一個結(jié)構(gòu)數(shù)組元素,因此采用了循環(huán)語句來讀寫全部數(shù)組元素。還要注意指針變量pp,qq由于循環(huán)改變了它們的值,因此在程序中兩次分別對它們重新賦予了數(shù)組的首地址。本章小結(jié)
一、C語言中,用文件指針標(biāo)識文件,當(dāng)一個文件被
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年陶瓷色釉馬克杯項(xiàng)目投資價值分析報告
- 2024至2030年輕鋼結(jié)構(gòu)配件項(xiàng)目投資價值分析報告
- 個人借款合同2025年3
- 2024至2030年雙組份聚氨酯密封膏項(xiàng)目投資價值分析報告
- 2024企業(yè)商務(wù)考察合同3篇
- 2025年事業(yè)單位聘用合同格式范本
- 2024年校企合作產(chǎn)學(xué)研合作成果轉(zhuǎn)化合同3篇
- 飯店購銷的合同范本2025年
- 2025年抖音號合作合同范本
- 2025工廠轉(zhuǎn)讓合同協(xié)議書
- 中國戲曲 昆曲學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 工廠車間安全培訓(xùn)試題附參考答案(能力提升)
- 企業(yè)內(nèi)部審計流程規(guī)范與操作指南
- 小學(xué)生食品安全教育教案(共十五課時)
- 農(nóng)場場長、副場長崗位責(zé)任制
- 起訴申請書范文
- 小數(shù)除以小數(shù)豎式計算題100道及答案
- 河南省鄭州市管城回族區(qū)2023-2024學(xué)年六年級上學(xué)期期末數(shù)學(xué)試題+
- 2024年全國職業(yè)院校技能大賽中職組(母嬰照護(hù)賽項(xiàng))考試題庫(含答案)
- 博山污水處理廠提標(biāo)改造工程技術(shù)標(biāo)
- 低空經(jīng)濟(jì)公司的投融資方案
評論
0/150
提交評論