C語言檔案操作

2021-09-25 02:29:27 字數 3111 閱讀 6303

什麼是檔案:磁碟上的檔案是檔案。在程式設計中,我們一般談的檔案有兩種:程式檔案和資料檔案

程式檔案

包括源程式檔案(字尾為.c),目標檔案(windows環境字尾為.obj),可執行程式(windows環境字尾為.exe).

資料檔案

檔案的內容不一定是程式·,而是程式執行時讀寫的資料,比如程式執行時需要從中讀取的資料檔案,或者輸出內容的檔案。

我們在文章裡討論的是資料檔案。

檔案主要包括兩部分:檔案屬性和檔案內容

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

檔名包含三個部分:檔案路徑+檔名主幹+檔案字尾

例如:c:\code\test.txt

為了方便起見,檔案標識常被稱為檔名。

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

如果要求在外存上以ascii碼的形式儲存,則需要在儲存前轉換。以ascii字元的形式儲存的檔案就是文字檔案。

乙個資料在記憶體中是怎麼儲存的呢?

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

例如:如果有整數10000,如果以ascii碼的形式輸出到磁碟,則磁碟中占用5個位元組(每個字元乙個位元組),而二進位制形式輸出,則在磁碟上只占用4個位元組。

檔案緩衝區:ansic標準採用「緩衝檔案系統」處理的資料檔案的,所謂緩衝檔案系統是指系統自動的在記憶體中為程式中的每乙個正在使用的檔案開闢一塊「檔案緩衝區」。從記憶體中向磁碟輸出資料會先送到記憶體的緩衝區,裝滿緩衝區後才一起送到磁碟上。如果從磁碟向計算機讀入資料,則從磁碟檔案中讀取資料輸入到記憶體緩衝區(充滿緩衝區),然後再從緩衝區逐個的將資料送到程式資料區(程式變數等)。緩衝區的大小根據c編譯系統決定的。

資料的緩衝方式分為:

檔案指標

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

每個被使用的檔案都在記憶體中開闢了乙個相應地檔案資訊區,用來存放檔案的相關資訊(如檔案的名字,檔案狀態及檔案當前的位置等)。這些資訊是儲存在乙個結構體變數中的。該結構體型別是有系統宣告的,取名file.

不同的c編譯器的file型別包含的內容不完全相同,但是大同小異,每當開啟乙個檔案的時候,系統會根據檔案的情況自動建立乙個file結構的變數,並填充其中資訊,使用者不必關心細節。

一般都是通過乙個file的指標來維護file結構的變數,這樣使用起來更加方便,下面我們可以建立乙個file*的指標變數:

file*  pf;          //檔案指標變數
定義pf是乙個指向file型別資料的指標變數,可以使pf指向某個檔案的檔案資訊區(是乙個結構體變數)。通過該檔案資訊區中的資訊就能夠訪問該檔案。也就是說,通過檔案指標變數能夠找到與它關聯的檔案。

乙個檔案啟用時,file*是開啟乙個流,檔案指標(控制代碼)。任何乙個檔案在開啟時會啟動三個流(標準輸入,標準輸出,標準錯誤)分別對應(stdin,stdout,stderr)對應裝置鍵盤,顯示器,顯示器。

檔案的開啟與關閉

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

在編寫程式的時候,再開啟檔案的同時,都會返回乙個file*的指標變數指向該檔案,也相當於建立了指標和檔案的關係。

ansic規定使用fopen函式來開啟檔案,fclose來關閉檔案。

file* fopen(const char*filename,const char *mode);

int fclose(file * strem);

開啟方式如下:

示例**:

//  fopen fclose example

#include #include #pragma warning(disable:4996)

int main()

system("pause");

return 0;

}

檔案的順序讀寫:

檔案的隨機讀寫:

fseek

根據檔案指標的位置和偏移量來定位檔案指標

int fseek (file *stream ,long int offset,int origin);
ftell

返回檔案指標相對於起始位置的偏移量

long int ftell(file * stream);
rewind

讓檔案指標的位置回到檔案的起始位置

void rewind (file * stream);
檔案的結束判定:被錯誤使用的feof牢記:在檔案讀取過程中,不能用feof函式的返回值直接用來判斷檔案的是否結束。而是應用於當檔案讀取結束時,判斷是讀取失敗結束,還是遇到檔案尾結束。1,文字檔案是否讀取結束,判斷返回值是否為eof(fgetc),或者null(fgets)

2,二進位制檔案的讀取結束判斷,判斷返回值是否小於實際要讀的個數

c語言檔案操作

rt null ch fgetc fp while ch eof fclose fp 本 例程式的功能是從檔案中逐個讀取字元,在螢幕上顯示。程式定義了檔案指標fp,以讀文字檔案方式開啟檔案 d jrzh example ex1 1.c 並使fp指向該檔案。如開啟檔案出錯,給出提示並退出程式。程式第1...

C語言檔案操作

1.首先要理解幾個概念 檔案 按一定規則儲存在磁碟上的資料集合。檔名 能唯一標識某個磁碟檔案的字串。形式 碟符 路徑 檔名.副檔名 二進位制檔案 資料以二進位制形式在儲存在磁碟上。裝置檔案 輸入 輸出裝置 標準輸入檔案 鍵盤 標準輸出檔案 標準錯誤輸出檔案 顯示器 檔案型指標 c語言是通過名為fil...

C語言檔案操作

1,兩種檔案訪問方式 輸入,輸出方式 順序訪問 直接訪問 2,資料的兩種存放形式 文字檔案 二進位制檔案 3.檔案指標 定義檔案型別指標變數的一般形式 file 指標變數名 例如 file fp1,fp2 4.開啟檔案 在使用檔案之前,需開啟檔案.在c裡使用fopen函式開啟檔案.格式為 fopen...