C程序設計 第四版 教案第十章

2023-01-13 21:51:03 字數 3804 閱讀 5634

教案首頁

檢查者簽字年月日

第10章對檔案的輸入輸出

10.1 c檔案的有關基本知識

10.1.1 什麼是檔案

檔案有不同的型別,在程式設計中,主要用到兩種檔案:

(1) 程式檔案。包括源程式檔案(字尾為.c)、目標檔案(字尾為.obj)、可執行檔案(字尾為.exe)等。這種檔案的內容是程式**。

檔案有不同的型別,在程式設計中,主要用到兩種檔案:

(2) 資料檔案。檔案的內容不是程式,而是供程式執行時讀寫的資料,如在程式執行過程中輸出到磁碟(或其他外部裝置)的資料,或在程式執行過程中供讀入的資料。如一批學生的成績資料,或貨物交易的資料等。

本章主要討論的是資料檔案

在以前各章中所處理的資料的輸入和輸出,從終端的鍵盤輸入資料,執行結果輸出到終端顯示器上

常常需要將一些資料輸出到磁碟上儲存起來,以後使用

這就要用到磁碟檔案

作業系統把各種裝置都統一作為檔案處理

從作業系統的角度看,每乙個與主機相聯的輸入輸出裝置都看作是檔案。例如,

終端鍵盤是輸入檔案

顯示屏和印表機是輸出檔案

「檔案」指儲存在外部介質上資料的集合

一批資料是以檔案的形式存放在外部介質上的

作業系統是以檔案為單位對資料進行管理

想找存放在外部介質上的資料,先按檔名找到所指定的檔案,然後再從該檔案讀資料

要向外部介質上儲存資料也必須先建立乙個檔案(以檔名作為標誌),才能向它輸出資料

「檔案」指儲存在外部介質上資料的集合

一批資料是以檔案的形式存放在外部介質上的

作業系統是以檔案為單位對資料進行管理

想找存放在外部介質上的資料,先按檔名找到所指定的檔案,然後再從該檔案讀資料

要向外部介質上儲存資料也必須先建立乙個檔案(以檔名作為標誌),才能向它輸出資料

輸入輸出是資料傳送的過程,資料如流水一樣從一處流向另一處,因此常將輸入輸出形象地稱為流(stream),即資料流。流表示了資訊從源到目的端的流動。

輸入操作時,資料從檔案流向計算機記憶體

輸出操作時,資料從計算機流向檔案

無論是用word開啟或儲存檔案,還是c程式中的輸入輸出都是通過作業系統進行的

「流」是乙個傳輸通道,資料可以從執行環境流入程式中,或從程式流至執行環境

從c程式的觀點來看,無論程式一次讀寫乙個字元,或一行文字,或乙個指定的資料區,作為輸入輸出的各種檔案或裝置都是統一以邏輯資料流的方式出現的。c語言把檔案看作是乙個字元(或位元組)的序列。乙個輸入輸出流就是乙個字元流或位元組(內容為二進位制資料)流。

c的資料檔案由一連串的字元(或位元組)組成,而不考慮行的界限,兩行資料間不會自動加分隔符,對檔案的訪問是以字元(位元組)為單位的。輸入輸出資料流的開始和結束僅受程式控制而不受物理符號(如回車換行符)控制,這就增加了處理的靈活性。這種檔案稱為流式檔案。

10.1.2 檔名

檔案要有乙個唯一的檔案標識,以便使用者識別和引用。

檔案標識包括三部分:

(1)檔案路徑

(2)檔名主幹

(3)檔案字尾

檔案路徑表示檔案在外部儲存裝置中的位置。如:

d: \cc\temp\

表示檔案存放在d盤中的cc目錄下的temp子目錄下面

10.1.3 檔案的分類

根據資料的組織形式,資料檔案可分為ascii檔案和二進位制檔案。

資料在記憶體中是以二進位制形式儲存的,如果不加轉換地輸出到外存,就是二進位制檔案

如果要求在外存上以ascii**形式儲存,則需要在儲存前進行轉換

ascii檔案又稱文字檔案,每乙個位元組放乙個字元的ascii**

字元一律以ascii形式儲存

數值型資料既可以用ascii形式儲存,也可以用二進位制形式儲存

如有整數10000,如果用ascii碼形式輸出到磁碟,則在磁碟中佔5個位元組(每乙個

字元佔乙個位元組),而用二進位制形式輸出,則在磁碟上只佔4個位元組(用vc++ c時)

10.1.4 檔案緩衝區

ansi c標準採用「緩衝檔案系統」處理資料檔案

所謂緩衝檔案系統是指系統自動地在記憶體區為程式中每乙個正在使用的檔案開闢一

個檔案緩衝區

從記憶體向磁碟輸出資料必須先送到記憶體中的緩衝區,裝滿緩衝區後才一起送到磁碟去

如果從磁碟向計算機讀入資料,則一次從磁碟檔案將一批資料輸入到記憶體緩衝區(充滿緩衝區),然後再從緩衝區逐個地將資料送到程式資料區(給程式變數)

10.1.5 檔案型別指標

緩衝檔案系統中,關鍵的概念是「檔案型別指標」,簡稱「檔案指標」

每個被使用的檔案都在記憶體中開闢乙個相應的檔案資訊區,用來存放檔案的有關信

息(如檔案的名字、檔案狀態及檔案當前位置等)

這些資訊是儲存在乙個結構體變數中的。該結構體型別是由系統宣告的,取名為

file

宣告file結構體型別的資訊包含在標頭檔案「中

一般設定乙個指向file型別變數的指標變數,然後通過它來引用這些file型別變數

10.2 開啟與關閉檔案

10.2.1 用fopen函式開啟資料檔案

對檔案讀寫之前應該「開啟」該檔案,在使用結束之後應「關閉」該檔案。

所謂「開啟」是指為檔案建立相應的資訊區(用來存放有關檔案的資訊)和檔案緩衝區(用來暫時存放輸入輸出的資料)。

在編寫程式時,在開啟檔案的同時,一般都指定乙個指標變數指向該檔案,也就是建立起指標變數與檔案之間的聯絡,這樣就可以通過該指標變數對檔案進行讀寫

所謂「關閉」是指撤銷檔案資訊區和檔案緩衝區

fopen函式的呼叫方式為:

fopen(檔名,使用檔案方式);

例如:fopen(「a1」,」r」);

表示要開啟名為「a1」的檔案,使用檔案方式為「讀入」

fopen函式的返回值是指向a1檔案的指標

通常將fopen函式的返回值賦給乙個指向檔案的指標變數。如:

file *fp;

fp=fopen(「a1」,」r」);

fp和檔案a1相聯絡,fp指向了a1檔案

在開啟乙個檔案時,通知編譯系統以下3個資訊:

①需要訪問的檔案的名字

②使用檔案的方式(「讀」還是「寫」等)

③讓哪乙個指標變數指向被開啟的檔案

10.2.2 用fclose函式關閉資料檔案

閉檔案用fclose函式。fclose函式呼叫的一般形式為

fclose(檔案指標);

例如: fclose (fp);

如果不關閉檔案將會丟失資料。

10.3 順序讀寫資料檔案

在順序寫時,先寫入的資料存放在檔案中前面,後寫入的資料存放在檔案中後面

在順序讀時,先讀檔案中前面的資料,後讀檔案中後面的資料

對順序讀寫來說,對檔案讀寫資料的順序和資料在檔案中的物理順序是一致的

順序讀寫需要用庫函式實現

10.3.1 怎樣向檔案讀寫字元

讀寫乙個字元的函式

例10.1 從鍵盤輸入一些字元,逐個把它們送到磁碟上去,直到使用者輸入乙個「#」為止。

解題思路:用fgetc函式從鍵盤逐個輸入字元,然後用fputc函式寫到磁碟檔案。

#include <>

#include <>

int main()

ch=getchar( );

printf(「請輸入乙個字串(以#結束):");

ch=getchar( );

while(ch!=『#』)

fclose(fp);

putchar(10);

return 0;

}10.3.2 怎樣向檔案讀寫乙個字串

讀寫乙個字串的函式

說明:fgets函式的函式原型為:

char *fgets (char *str,int n,file *fp);

物化第四版目錄

緒論 0.1 物理化學課程的內容 0.2 學習物理化學的要求及方法 0.3 物理量的表示及運算 1.物理量的表示 2.對數中的物理量 3.量值計算 第一章氣體的pvt關係 1.1 理想氣體狀態方程 1.理想氣體狀態方程 2.理想氣體模型 3.摩爾氣體常數 1.2 理想氣體混合物 1.混合物的組成 2...

考試大綱第四版

考試大綱參考 第1章管理 管理者與組織 1管理的定義 重點 2管理的職能 重點 3管理者及其分類 4管理者的技能 重點 5管理者的角色 重點 6組織的含義 7 企業的定義 企業的特徵 8企業的三種基本形式 9社會責任含義及利益相關者 重點 10企業應該如何承擔社會責任 重點 第2章管理思想的演進 1...

報紙第四版新聞稿

用自己的雙手給考生營建乙個溫馨環境 高一 高二全體同學離校前進行衛生掃除 6月9日中午,氣溫達到了攝氏35 剛剛參加完本學期第二次模組測試的我校高 一 高二的同學,集體將校園衛生加以了徹底清掃,目的是為給到我校參加初中學業水平測試的同學創造乙個好的考試和生活環境。同學們冒著高溫,清理考場,調整桌凳,...