版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(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語言能夠處理什么樣的文件?對(duì)于磁盤上的文件如何處理?本章將著重講述文件的概念、文件的打開和關(guān)閉,有關(guān)文件的常用的讀寫函數(shù)等。11.1文件的概念一、文件的分類1、從用戶觀點(diǎn):特殊文件(標(biāo)準(zhǔn)輸入輸出文件或標(biāo)準(zhǔn)設(shè)備文件)。普通文件(磁盤文件)。2、從操作系統(tǒng)的角度看,每一個(gè)與主機(jī)相連的輸入輸出設(shè)備看作是一個(gè)文件。例:輸入文件:終端鍵盤輸出文件:顯示屏和打印機(jī)3、按數(shù)據(jù)的組織形式:ASCII文件(文本文件):每一個(gè)字節(jié)放一個(gè)ASCII代碼二進(jìn)制文件:把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲(chǔ)形式原樣輸出到磁盤上存放。二、文件指針在C語言中用一個(gè)指針變量指向一個(gè)文件,這個(gè)指針稱為文件指針。通過文件指針就可對(duì)它所指的文件進(jìn)行各種操作。用FILE類型可以定義文件類型指針。定義說明文件指針的一般形式為:
FILE*指針變量標(biāo)識(shí)符;其中FILE應(yīng)為大寫,在編寫源程序時(shí)不必關(guān)心FILE結(jié)構(gòu)的細(xì)節(jié)。例如:FILE*fp;表示fp是指向FILE結(jié)構(gòu)的指針變量,通過fp
即可找到存放某個(gè)文件信息的結(jié)構(gòu)變量,然后按結(jié)構(gòu)變量提供的信息找到該文件,實(shí)施對(duì)文件的操作。文件在進(jìn)行讀寫操作之前要先打開,使用完畢要關(guān)閉。所謂打開文件,實(shí)際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其它操作。關(guān)閉文件則斷開指針與文件之間的聯(lián)系,也就禁止再對(duì)該文件進(jìn)行操作。在C語言中,文件操作都是由庫函數(shù)來完成的。在本章內(nèi)將介紹文件的打開、關(guān)閉以及主要的文件操作函數(shù)等。11.2文件的打開與關(guān)閉
1、文件打開函數(shù)fopen
fopen函數(shù)用來打開一個(gè)文件,其調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式)說明:“文件指針名”必須是被說明為FILE類型的指針變量,“文件名”是被打開文件的文件名?!笆褂梦募绞健笔侵肝募念愋秃筒僮饕??!拔募笔亲址A炕蜃址?dāng)?shù)組。例如:FILE*fp;
fp=fopen("filea","r");其意義是在當(dāng)前目錄下打開文件filea,只允許進(jìn)行“讀”操作,并使fp指向該文件。
文件使用方式意義"rt"只讀打開一個(gè)文本文件,只允許讀數(shù)據(jù)"wt"只寫打開或建立一個(gè)文本文件,只允許寫數(shù)據(jù)"at"追加打開一個(gè)文本文件,并在文件末尾寫數(shù)據(jù)"rb"只讀打開一個(gè)二進(jìn)制文件,只允許讀數(shù)據(jù)"wb"只寫打開或建立一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù)"ab"追加打開一個(gè)二進(jìn)制文件,并在文件末尾寫數(shù)據(jù)"rt+"讀寫打開一個(gè)文本文件,允許讀和寫"wt+"讀寫建立一個(gè)文本文件,允許讀寫"at+"讀寫打開一個(gè)文本文件,允許讀,或在文件末追加數(shù)據(jù)"rb+“讀寫打開一個(gè)二進(jìn)制文件,允許讀和寫"wb+"讀寫建立一個(gè)新二進(jìn)制文件,允許讀和寫“ab+”讀寫打開一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)2、文件的關(guān)閉文件一旦使用完畢,應(yīng)用關(guān)閉文件函數(shù)fclose把文件關(guān)閉,以避免發(fā)生文件的數(shù)據(jù)丟失等錯(cuò)誤。
fclose函數(shù)調(diào)用的一般形式是:fclose(文件指針);
例如:
fclose(fp);正常完成關(guān)閉文件操作時(shí),fclose函數(shù)返回值為0。如返回非零值則表示有錯(cuò)誤發(fā)生。對(duì)文件的讀和寫是最常用的文件操作。11.3文件的字符輸入與輸出在C語言中提供了多種文件讀寫的函數(shù):字符讀寫函數(shù):fgetc和fputc字符串讀寫函數(shù):fgets和fputs格式化讀寫函數(shù):fscanf和fprinf值得注意的是,使用以上函數(shù)之前應(yīng)包含頭文件stdio.h1、讀字符函數(shù)fgetc
fgetc函數(shù)的功能是從指定的文件中讀一個(gè)字符,函數(shù)調(diào)用的形式為:字符變量=fgetc(文件指針);例如:ch=fgetc(fp);其意義是從打開的文件fp中讀取一個(gè)字符并送入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ù)的功能是把一個(gè)字符寫入指定的文件中,函數(shù)調(diào)用的形式為:fputc(字符量,文件指針);其中,待寫入的字符量可以是字符常量或變量,例如:fputc(‘a(chǎn)’,fp);其意義是把字符a寫入fp所指向的文件中?!境绦颉繌逆I盤輸入一行字符,寫入一個(gè)文件,再把該文件內(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功能是從指定的文件中讀一個(gè)字符串到字符數(shù)組中。函數(shù)調(diào)用的形式為:fgets(字符數(shù)組名,n,文件指針);其中n是一個(gè)正整數(shù)。表示從文件中讀出的字符串不超過n-1個(gè)字符。在讀入的最后一個(gè)字符后加上串結(jié)束標(biāo)志‘\0’。例如:fgets(str,n,fp);的意義是從fp所指的文件中讀出n-1個(gè)字符送入字符數(shù)組str中?!境绦颉繌膃11_1.c文件中讀入一個(gè)含10個(gè)字符的字符串。#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
功能是向指定的文件寫入一個(gè)字符串調(diào)用形式:fputs(字符串,文件指針)其中字符串可以是字符串常量,也可以是字符數(shù)組名,或指針變量,例如:fputs(“abcd“,fp);其意義是把字符串“abcd”寫入fp所指的文件之中。11.5文件的格式化輸入與輸出fscanf函數(shù),fprintf函數(shù)與前面使用的scanf和printf
函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩者的區(qū)別在于fscanf
函數(shù)和fprintf函數(shù)的讀寫對(duì)象不是鍵盤和顯示器,而是磁盤文件。這兩個(gè)函數(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指向的文件中*/【程序】從鍵盤輸入兩個(gè)學(xué)生數(shù)據(jù),寫入一個(gè)文件中,再讀出這兩個(gè)學(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ù)每次只能讀寫一個(gè)結(jié)構(gòu)數(shù)組元素,因此采用了循環(huán)語句來讀寫全部數(shù)組元素。還要注意指針變量pp,qq由于循環(huán)改變了它們的值,因此在程序中兩次分別對(duì)它們重新賦予了數(shù)組的首地址。本章小結(jié)
一、C語言中,用文件指針標(biāo)識(shí)文件,當(dāng)一個(gè)文件被
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公環(huán)境下的健康管理-以家庭醫(yī)生為核心的服務(wù)模式探討
- 辦公環(huán)境中寵物文化的價(jià)值挖掘與推廣
- 創(chuàng)新驅(qū)動(dòng)的展會(huì)市場營銷戰(zhàn)略探討
- 2025廣告布安裝工程承攬合同模板
- 醫(yī)學(xué)角度看待兒童肥胖與消費(fèi)觀的關(guān)系
- 企業(yè)應(yīng)急預(yù)案中的逃生路線規(guī)劃實(shí)踐
- 從理論到實(shí)踐教育背景下職業(yè)生涯的開啟
- 2025的個(gè)人租房合同模板參考
- 2024年體育培訓(xùn)市場供需格局及未來發(fā)展趨勢報(bào)告
- 2025重慶市蔬菜購買合同范本
- 【倫理課件】死亡與安樂死
- 春節(jié)的花車巡游繁花伴隨的盛大游行
- 工程造價(jià)咨詢服務(wù)方案(技術(shù)方案)
- 腎造瘺護(hù)理查房
- 看漢字寫拼音(聲母+單韻母、復(fù)韻母)直接打印
- 剪映專業(yè)版畫中畫與蒙版使用方法教程
- 《中國居民膳食指南》
- 醫(yī)院凈化工程施工設(shè)計(jì)方案
- 金屬冶煉建設(shè)項(xiàng)目安全設(shè)施設(shè)計(jì)編寫提綱2015年
- 教科版四年級(jí)上冊(cè)科學(xué)實(shí)驗(yàn)報(bào)告全 冊(cè)
- 高層住宅項(xiàng)目四優(yōu)化創(chuàng)效經(jīng)驗(yàn)交流PPT
評(píng)論
0/150
提交評(píng)論