C語言程序設(shè)計基礎(chǔ)第12章+文件.ppt_第1頁
C語言程序設(shè)計基礎(chǔ)第12章+文件.ppt_第2頁
C語言程序設(shè)計基礎(chǔ)第12章+文件.ppt_第3頁
C語言程序設(shè)計基礎(chǔ)第12章+文件.ppt_第4頁
C語言程序設(shè)計基礎(chǔ)第12章+文件.ppt_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第十二章 文 件,文件概念 文件:是保存在外存儲器上的一組數(shù)據(jù)的有序集合。 文件的特點是: (1)數(shù)據(jù)長久保存 (2)數(shù)據(jù)長度不定 (3)數(shù)據(jù)按順序存取 語言中的文件完全是字節(jié)代碼的序列(字節(jié)流) 可以看作為磁帶,第十二章 文 件,文件有兩種數(shù)據(jù)形式: ASCII碼(文本文件 text stream) a.c 程序文件 文本文件是字符流 二進制碼(二進制文件 binary stream) a.exe 執(zhí)行文件 二進制文件是直接把內(nèi)存數(shù)據(jù)以二進制形式保存。 對于一個整型數(shù)1234: 以文本文件保存,它是四個字符: ASCII碼分別是:49 50 51 52 ; 以二進制文件保存,它是1234的二

2、進制數(shù)0 x04D2,由于磁盤速度相對很低,直接把數(shù)據(jù)寫到 磁盤會效率很低,文 件,緩沖文件系統(tǒng): 向磁盤輸出數(shù)據(jù):數(shù)據(jù) 緩沖區(qū), 裝滿緩沖區(qū)后 磁盤文件。 從磁盤讀入數(shù)據(jù):先一次性從磁盤文件將一批數(shù)據(jù)輸入到緩沖區(qū),然后再從緩沖區(qū)逐個讀入數(shù)據(jù)到變量。 內(nèi)存單元 內(nèi)存單元,數(shù)據(jù),緩沖器,512字節(jié),文件,由操作系統(tǒng)自動完成,程序控制,文件名,用什么標(biāo)識,文 件,文件類型指針 使用一個文件指針,來指示文件緩沖區(qū)中具體讀寫的位置。 文件指針變量 文件指針定義: FILE *fp ; 文件類型,數(shù)據(jù),緩沖器,512字節(jié),文件,由操作系統(tǒng)自動完成,程序控制,文件名,fp,文 件,文件類型指針 文件指針定

3、義: FILE *fp ; 文件類型 文件指針變量 語言中允許同時使用多個文件,每個文件都有各自的緩沖區(qū),用不同的文件指針分別指示。,問題:如何使fp與具體文件掛鉤?,文件的打開,文件打開 使文件指針與相應(yīng)文件實體對應(yīng)起來 格式: fpfopen(“文件名”,“文件使用方式”) 如:fp = fopen(a.dat, r) 作用: 1 在磁盤中找到文件a.dat 2 在內(nèi)存中開辟512個字節(jié)的緩沖區(qū),并由fp指示文件緩沖區(qū)起始位置 3 把首塊512字節(jié)數(shù)據(jù):磁盤 緩沖器,以后程序只對文件指針進行操作,即用fp代表磁盤文件。,文件使用方式(ASCII碼文件): “r” 僅從已建立的文件讀取數(shù)據(jù)

4、“w” 僅把數(shù)據(jù)寫到一個新建文件中 “a” 僅把數(shù)據(jù)寫到已建立的文件的 尾部,文件基本讀寫,我們可以這樣看: 文件 看作 一個數(shù)組(緩沖器), 文件指針 看作 是指向數(shù)組元素的指針, 文件操作:對文件指針?biāo)傅木彌_器單元進行存取. 限制:文件的讀寫一般是順序進行的,位置完全由文件指針控制,并且文件指針的改變也由系統(tǒng)控制。,文件基本讀寫,語言文件讀寫函數(shù) 磁盤文件操作 鍵盤操作 chfgetc( fp ) ch=getchar( ) fputc(ch , fp) putchar( ch) fscanf( fp , “格式”, 輸入表) scanf( ) fprintf( fp , “格式”, 輸

5、出表) printf( ) 它們的說明在stdio.h中,文件基本讀寫,例:將一個已存在的文件a.dat的內(nèi)容拷貝到b.dat文件中。 FILE *fpa, *fpb; (1) 定義文件指針 char c; int i;: fpa=fopen(a.dat,r); fpb=fopen(b.dat,w); (2) 打開文件并建立相應(yīng)指針 c=fgetc(fpa); fputc(c,fpb); (3) 文件讀寫 c=fgetc(fpa); fputc(c,fpb); fscanf(fpa, %d , (4) 關(guān)閉打開的所有文件,每一次讀/寫,文件指針自動+,a b 3 5,文件基本讀寫,文件程序 F

6、ILE *fpa, *fpb; (1) 定義文件指針 fpa=fopen(a.dat, r); (2) 打開文件并建立相應(yīng)指針 c=fgetc(fpa); fputc(c,fpb); (3) 文件讀寫 fscanf(fpa, %d , (4) 關(guān)閉打開的所有文件 ,#include stdio.h main( ) FILE *fpa, *fpb; if (fpa=fopen(d:tca.dat, r)= =NULL) printf(cannot open file a.dat!); exit(0); if (fpb=fopen(d:tcb.dat, w)= =NULL) printf(cann

7、ot open file b.dat!); exit(0); while ( ! feof(fpa) fputc(fgetc(fpa),fpb); if (fclose(fpa) printf(cannot close file a.dat!); exit(0); if (fclose(fpb) printf(cannot close file b.dat!); exit(0); ,當(dāng)fpa指向文件末尾時, feof(fpa) = =非零,fclose(fp) 0 正常 / 1 有錯,fp = =NULL, 表明文件不能正常打開,c=fgetc(fpa); while ( c!=EOF) fp

8、utc(c, fpb); c=fgetc(fpa); ,文件基本讀寫,例:統(tǒng)計文件的行數(shù) main( ) FILE *fp ; int n=0; chat c; if (fp=fopen(d:tca.dat, r)= =NULL) printf(cannot open file a.dat!); exit(0); while ( ! feof(fp) c = fgetc(fpa); if (c = = n) n+ ; printf(“%dn”, n); if (fclose(fpa) printf(cannot close file a.dat!); exit(0); ,文件的打開和關(guān)閉 fopen(文件名,使用文件方式); fclose(文件指針);,文件的讀寫,ch=fgetc(fp); fputc(ch,fp); fread(buffer,size,count,fp ); fwrite(buffer,size,count,fp); fscanf(文件指針,格式字符串,輸入表列); fprintf(文件指針,格式字符串,輸入表列); fgets(str,n,fp); fputs(str,fp);,文件定位,rewind(fp)

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論