C語言流與文件_第1頁
C語言流與文件_第2頁
C語言流與文件_第3頁
C語言流與文件_第4頁
C語言流與文件_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、typedef定義類型別名Typedef是C/C+語言提供的為已有的數(shù)據(jù)類型定義類型別名的機制。此時,并沒有產(chǎn)生新的數(shù)據(jù)類型,只是為現(xiàn)存的類型定義了一個新的名字。這樣有助于給現(xiàn)有的數(shù)據(jù)類型取一個更有意義的名字。語句形式 typedef type newname例子typedef int WIDTHtypedef int HEIGHTWIDTH w;HEIGHT h;typedef 定義類型的步驟1.按定義變量的方法定義變量,int a;2.把變量名替換為新類型名, int WIDTH;3.在最前面加上typedef,type int WIDTH;4.這樣就可以使用新類型來定義變量了,WIDTH

2、 w1,w2;為數(shù)組類型定義別名1.定義數(shù)組的語句,int a10;2.把數(shù)組名改為類型別名ARRAY, int ARRAY10;3.在最前面加上typedef,typedef int ARRAY10;4.用新類型定義數(shù)組:ARRAY a,b;函數(shù)指針別名typedef int (*Square)(int ,int);Square s1,s2;s1,s2和Square的簽名相同結(jié)構(gòu)類型的別名typedef struct tagDateTime int year; int month;int day; int hour; int minute double second;DateTime;流與文

3、件文件的基本概念一般來說每臺計算機都有一個操作系統(tǒng)負責管理計算機的各種資源。操作系統(tǒng)的文件系統(tǒng)負責將外部設(shè)備(如硬盤、打印機等)的信息組織方式進行統(tǒng)一規(guī)劃,提供統(tǒng)一的程序訪問數(shù)據(jù)的方法。文件通常所說的文件是指磁盤文件,它是存儲外部介質(zhì)的一個信息序列的集合,操作系統(tǒng)給每個信息序列一個單獨的名稱,這個名稱就叫做文件名(或文件標識符)。文件時操作系統(tǒng)數(shù)據(jù)管理的單位。文件存儲在外存中,外存的信息相對于內(nèi)存來說是海量的。文件分類按邏輯結(jié)構(gòu): 1)記錄文件:由記錄組成 2)流式文件:由一個個字符數(shù)據(jù)順序組成存儲介質(zhì) 1)磁盤文件:存儲在介質(zhì)(如磁盤)上的文件 2)設(shè)備文件:非存儲介質(zhì)設(shè)備(鍵盤、顯示器)文

4、件的組織形式 文本文件和二進制文件程序文件和數(shù)據(jù)文件程序文件:源程序文件、目標文件、可執(zhí)行程序文件等。數(shù)據(jù)文件:程序的輸入或者輸出數(shù)據(jù)的存儲文件。高級語言中將程序代碼和數(shù)據(jù)分開存儲。流與緩沖C語言在程序員和設(shè)備之間提供了一層抽象,為程序員提供與設(shè)備無關(guān)的一致界面,這就是流,真實的設(shè)備被稱為文件。流:輸入流和輸出流C語言讀或?qū)懳募r會有一個流與文件聯(lián)系在一起。C語言中的流是指連接程序和文件、設(shè)備,并將數(shù)據(jù)導入和導出程序的管道。管道都有源頭和目的地。輸出流程序顯示器、磁盤文件等Puts(),fprintf()等輸入流鍵盤、文件等程序gets(),fscanf()等流的格式:文本流和二進制流文本流式

5、一種字符序列,例如多數(shù)系統(tǒng)中為ASCII字符序列。文本流中的字符序列與外設(shè)中的字符序列并不一一對應(yīng)。將一個換行符(ASCII為10)以文本流寫入文件時會變成回車換行(rn)(13,10),在讀取文件時,一旦遇到回車換行的組合(連續(xù)的ASCII組合13,10),則會轉(zhuǎn)換為換行字符。當我們以二進制方式往文件里寫入數(shù)據(jù)時,則將數(shù)據(jù)在內(nèi)存中的存儲形式原樣輸出到文件。二進制流二進制流是一種字節(jié)序列,它與外設(shè)中的字節(jié)序列意義對應(yīng),不進行任何字符變化。寫入(或讀入)的字節(jié)數(shù)和外設(shè)中被操作的字節(jié)數(shù)相等。(文本文件卻不是)緩沖區(qū)由于內(nèi)存的處理速度遠遠快于外存,在讀寫文件時需要用到緩沖區(qū)。所謂緩沖區(qū)是指在內(nèi)存沖開

6、辟的一段區(qū)域,當程序需要從外存中讀取文件中的數(shù)據(jù)時,系統(tǒng)先讀入足夠多的數(shù)據(jù)到緩沖區(qū)中,然后對緩沖區(qū)中的數(shù)據(jù)進行處理。當程序需要寫數(shù)據(jù)到外存中的文件時,同樣要先把數(shù)據(jù)送入到緩沖區(qū)中,等緩沖區(qū)滿了之后,再一起存入外存中。標準流C語言中預定義了三個標準流: stdin ,stdout,stderr用戶自定義流當需要從文件讀取或者寫出數(shù)據(jù)到文件中去時,可以創(chuàng)建一個用戶自定義流。創(chuàng)建流時必須給定名稱,同時需要制定是使用文本方式還是二進制方式打開流。使用完之后,流必須關(guān)閉。定義定義說明文件指針的一般形式為定義說明文件指針的一般形式為: FILE FILE * *指針變量指針變量標識符標識符文件指針變量的一

7、般形式為:FILE *變量名;例如:FILE *fp;typedef struct short level; unsigned flags;char fd;unsigned char hold;short bsize;unsigned char *buffer;unsigned char *curp;unsigned istemp;short token;FILE; 打開流定義流變量后就需要打開流,即創(chuàng)建流的源頭、目的地以及流的格式。打開流的函數(shù)是fopen(filename,mode);FILE *pFile;pFile=fopen(“D:test.dat”,”r”);If(NULL=pFi

8、le) printf(“Error!”);return;創(chuàng)建流的模式r只讀,打開一個文本文件,只允許讀數(shù)據(jù)w只寫,打開或建立一個文本文件,只允許寫數(shù)據(jù)a追加,打開一個文本文件,并在文件末尾寫數(shù)據(jù)rb只讀,打開一個二進制文件,只允許讀數(shù)據(jù)wb只寫,打開或建立一個二進制文件,只允許寫數(shù)據(jù)ab追加,打開一個二進制文件,并在文件末尾寫數(shù)據(jù)r+讀寫,打開一個文本文件,允許讀和寫w+讀寫,打開或建立一個文本文件,允許讀寫a+讀寫,打開一個文本文件,允許讀,或在文件末追加數(shù)據(jù)rb+讀寫,打開一個二進制文件,允許讀和寫wb+讀寫,打開或建立一個二進制文件,允許讀和寫ab+讀寫,打開一個二進制文件,允許讀,或在

9、文件末追加數(shù)據(jù)關(guān)閉流函數(shù)fclose(),關(guān)閉用fopen()打開的流。 fclose()函數(shù)吧遺留在緩沖區(qū)中數(shù)據(jù)寫入文件中,實施操作系統(tǒng)的關(guān)閉操作。關(guān)閉流的一般形式是: fclose(pFile);函數(shù)返回0表示正常關(guān)閉流,返回非0表示關(guān)閉流出錯。指向常量的指針變量 char ch4=“hao”; const char *pCh=ch;/ 指向的對象是常量,指向的內(nèi)容不可更改 *pch=a;/ error pch=“hello”; / ok編譯時可保證指針指向的內(nèi)容不變,數(shù)據(jù)的一致性指針常量char ch4=“hao”;char * const pCh=ch;/必須在聲明時初始化指針是常量,

10、指針值不可更改,但是其指向的內(nèi)容可以改變pCh=“hello”;/ error *pCh=a;/ okI/O文本流輸出文本流 fputc(),fputs(),fprintf()輸入文本流 feof(File *fp);判斷文件是否達到末尾 fgetc(),fgets() fscanf();格式化輸入I/O二進制流可讀寫二進制流的函數(shù)fwrite()和fread()其他文件處理庫函數(shù)C語言文件系統(tǒng)還提供一系列輔助性文件處理庫函數(shù),實現(xiàn)讀取或定位文件的位置指示、錯誤檢測、刪除文件或者對流清倉等。流的定位流的定位就是重置文件的位置指示,C語言主要包括兩個流的定位函數(shù): rewind()和seek()

11、 rewind():重置文件位置指示到文件頭 原型是void rewind(FILE *fp); fseek():重置文件位置指示到指定位置 原型是int fseek(FILE *fp,long offset,int origin);offset為正向后移,為負向前移文件的輸入輸出一般情況下是按順序訪問的,文件指針在文件剛打開時是指向文件的開始位置,每次進行文件讀寫后,文件指針自動移動到下一個位置,使得文件讀寫嚴格地一個一個進行下去。讀取流變量的位置號ftell() 函數(shù),其函數(shù)原型是: long ftell(FILE *fp);成功時,函數(shù)返回fp的當前位置值,它是相對于文件開頭的位移量。錯誤檢測ferror()函數(shù),其原型是: int ferror(FILE *fp);刪除文件remove()函數(shù),其原型是: int remove(const char *filename); 成功時,函數(shù)返回0,否則,返回非零。對流清倉fflush()函數(shù),其原型是: int fflush(FILE *fp);成功時,函數(shù)返回0,

溫馨提示

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

評論

0/150

提交評論