C的檔案操作 上 IT man

2021-04-18 07:42:09 字數 4850 閱讀 3896

csdn-blog

http://www.icool8.com/itbook/itblog/more.asp?name=jam-li&id=612 檔案 檔案的基本概念   所謂 「 檔案 」

是指一組相關資料的有序集合。這個資料集有乙個名稱,叫做檔名。實際上在前面的各章中我們已經多次使用了檔案,例如源程式檔案、目標檔案、可執行檔案、庫檔案 ( 標頭檔案 )

等。檔案通常是駐留在外部介質 ( 如磁碟等 )

上的,在使用時才調入記憶體中來。從不同的角度可對檔案作不同的分類。從使用者的角度看,檔案可分為普通檔案和裝置檔案兩種。

普通檔案是指駐留在磁碟或其它外部介質上的乙個有序資料集,可以是原始檔、目標檔案、可執行程式;也可以是一組待輸入處理的原始資料,或者是一組輸出的結果。對於原始檔、目標檔案、可執行程式可以稱作程式檔案,對輸入輸出資料可稱作資料檔案。

裝置檔案是指與主機相聯的各種外部裝置,如顯示器、印表機、鍵盤等。在作業系統中,把外部裝置也看作是乙個檔案來進行管理,把它們的輸入、輸出等同於對磁碟檔案的讀和寫。通常把顯示器定義為標準輸出檔案,一般情況下在螢幕上顯示有關資訊就是向標準輸出檔案輸出。如前面經常使用的

printf,putchar

函式就是這類輸出。鍵盤通常被指定標準的輸入檔案,從鍵盤上輸入就意味著從標準輸入檔案上輸入資料。

scanf,getchar

函式就屬於這類輸入。

從檔案編碼的方式來看,檔案可分為 ascii

碼檔案和二進位製碼檔案兩種。    ascii

00110101001101100011011100111000       ↓      ↓      ↓     ↓ 十進位製碼: 5       6      7      8 共占用 4 個位元組。 ascii

碼檔案可在螢幕上按字元顯示,例如源程式檔案就是 ascii 檔案,用 dos 命令 type

可顯示檔案的內容。由於是按字元顯示,因此能讀懂檔案內容。

二進位制檔案是按二進位制的編碼方式來存放檔案的。例如,數 5678 的儲存形式為:

0001011000101110

只佔二個位元組。二進位制檔案雖然也可在螢幕上顯示,但其內容無法讀懂。 c

系統在處理這些檔案時,並不區分型別,都看成是字元流,按位元組進行處理。輸入輸出字元流的開始和結束只由程式控制而不受物理符號 ( 如回車符 )

的控制。因此也把這種檔案稱作 「 流式檔案 」 。

本章討論流式檔案的開啟、關閉、讀、寫、定位等各種操作。檔案指標在c語言中用乙個指標變數指向乙個檔案,這個指標稱為檔案指標。通過檔案指標就可對它所指的檔案進行各種操作。定義說明檔案指標的一般形式為: file*

指標變數識別符號;其中 file

應為大寫,它實際上是由系統定義的乙個結構,該結構中含有檔名、檔案狀態和檔案當前位置等資訊。在編寫源程式時不必關心 file 結構的細節。例如: file*fp ;表示 fp 是指向 file

結構的指標變數,通過 fp

即可找存放某個檔案資訊的結構變數,然後按結構變數提供的資訊找到該檔案,實施對檔案的操作。習慣上也籠統地把 fp

稱為指向乙個檔案的指標。檔案的開啟與關閉檔案在進行讀寫操作之前要先開啟,使用完畢要關閉。所謂開啟檔案,實際上是建立檔案的各種有關資訊,並使檔案指標指向該檔案,以便進行其它操作。關閉檔案則斷開指標與檔案之間的聯絡,也就禁止再對該檔案進行操作。

在c語言中,檔案操作都是由庫函式來完成的。在本章內將介紹主要的檔案操作函式。

檔案開啟函式fopen    fopen

函式用來開啟乙個檔案,其呼叫的一般形式為:檔案指標名 =fopen(

檔名,使用檔案方式 ) 其中, 「 檔案指標名 」 必須是被說明為 file 型別的指標變數, 「 檔名 」

是被開啟檔案的檔名。 「 使用檔案方式 」

是指檔案的型別和操作要求。 「 檔名 」

是字串常量或字串陣列。例如: file*fp ;

fp=("filea","r");

其意義是在當前目錄下開啟檔案 filea ,只允許進行 「 讀 」 操作,並使 fp 指向該檔案。 又如:

file*fphzk

fphzk=("c://hzk16',"rb") 其意義是開啟 c

驅動器磁碟的根目錄下的檔案 hzk16

,這是乙個二進位制檔案,只允許按二進位制方式進行讀操作。兩個反斜線

「//」

中的第乙個表示轉義字元,第二個表示根目錄。使用檔案的方式共有 12

種,下面給出了它們的符號和意義。

檔案使用方式       意義

「rt」

唯讀開啟乙個文字檔案,只允許讀資料

「wt」

只寫開啟或建立乙個文字檔案,只允許寫資料

「at」

追加開啟乙個文字檔案,並在檔案末尾寫資料

「rb」

唯讀開啟乙個二進位制檔案,只允許讀資料

「wb」

只寫開啟或建立乙個二進位制檔案,只允許寫資料

「ab」

追加開啟乙個二進位制檔案,並在檔案末尾寫資料

「rt+」

讀寫開啟乙個文字檔案,允許讀和寫

「wt+」

讀寫開啟或建立乙個文字檔案,允許讀寫

「at+」

讀寫開啟乙個文字檔案,允許讀,或在檔案末追加資料

「rb+」

讀寫開啟乙個二進位制檔案,允許讀和寫

「wb+」

讀寫開啟或建立乙個二進位制檔案,允許讀和寫

「ab+」

讀寫開啟乙個二進位制檔案,允許讀,或在檔案末追加資料

對於檔案使用方式有以下幾點說明: 1. 檔案使用方式由 r,w,a,t,b , +

六個字元拼成,各字元的含義是: r(read): 讀 w(write): 寫

文字檔案,可省略不寫

b(banary): 二進位制檔案 +: 讀和寫 2. 凡用

「r」開啟乙個檔案時,該檔案必須已經存在,且只能從該檔案讀出。 3. 用

「w」開啟的檔案只能向該檔案寫入。若開啟的檔案不存在,則以指定的檔名建立該檔案,若開啟的檔案已經存在,則將該檔案刪去,重建乙個新檔案。 4.

若要向乙個已存在的檔案追加新的資訊,只能用

「a」方式開啟檔案。但此時該檔案必須是存在的,否則將會出錯。 5.

在開啟乙個檔案時,如果出錯, fopen 將返回乙個空指標值 null

。在程式中可以用這一資訊來判別是否完成開啟檔案的工作,並作相應的處理。因此常用以下程式段開啟檔案:

if((fp=fopen("c://hzk16","rb")==null)

這段程式的意義是,如果返回的指標為空,表示不能開啟 c 盤根目錄下的 hzk16

檔案,則給出提示資訊

「erroronopenc:/hzk16file!」 ,下一行 getch()

的功能是從鍵盤輸入乙個字元,但不在螢幕上顯示。在這裡,該行的作用是等待,只有當使用者從鍵盤敲任一鍵時,程式才繼續執行,因此使用者可利用這個等待時間閱讀出錯提示。敲鍵後執行 exit(1) 退出程式。 6.

把乙個文字檔案讀入記憶體時,要將 ascii

碼轉換成二進位製碼,而把檔案以文字方式寫入磁碟時,也要把二進位製碼轉換成 ascii

碼,因此文字檔案的讀寫要花費較多的轉換時間。對二進位制檔案的讀寫不存在這種轉換。 7. 標準輸入檔案 ( 鍵盤 ) ,標準輸出檔案 ( 顯示器 ) ,標準出錯輸出 ( 出錯資訊 )

是由系統開啟的,可直接使用。檔案關閉函式fclose檔案一旦使用完畢,應用關閉檔案函式把檔案關閉,以避免檔案的資料丟失等錯誤。 fclose 函式 呼叫的一般形式是: fclose( 檔案指標 ) ;例如:

fclose(fp);

正常完成關閉檔案操作時, fclose 函式返回值為 0

。如返回非零值則表示有錯誤發生。檔案的讀寫對檔案的讀和寫是最常用的檔案操作。

在c語言中提供了多種檔案讀寫的函式: · 字元讀寫函式: fgetc 和 fputc · 字串讀寫函式: fgets 和 fputs · 資料塊讀寫函式: freed 和 fwrite · 格式化讀寫函式: fscanf 和 fprinf

下面分別予以介紹。使用以上函式都要求包含標頭檔案 stdio.h

。字元讀寫函式fgetc和fputc字元讀寫函式是以字元 ( 位元組 )

為單位的讀寫函式。每次可從檔案讀出或向檔案寫入乙個字元。 一、讀字元函式 fgetc    fgetc

函式的功能是從指定的檔案中讀乙個字元,函式呼叫的形式為:字元變數 =fgetc( 檔案指標 ) ;例如:

ch=fgetc(fp);

其意義是從開啟的檔案 fp

中讀取乙個字元並送入 ch 中。   對於 fgetc

函式的使用有以下幾點說明: 1. 在 fgetc

函式呼叫中,讀取的檔案必須是以讀或讀寫方式開啟的。 2.

讀取字元的結果也可以不向字元變數賦值,例如:

fgetc(fp);

但是讀出的字元不能儲存。 3.

在檔案內部有乙個位置指標。用來指向檔案的當前讀寫位元組。在檔案開啟時,該指標總是指向檔案的第乙個位元組。使用 fgetc

函式後,該位置指標將向後移動乙個位元組。因此可連續多次使用 fgetc

函式,讀取多個字元。應注意檔案指標和檔案內部的位置指標不是一回事。檔案指標是指向整個檔案的,須在程式中定義說明,只要不重新賦值,檔案指標的值是不變的。檔案內部的位置指標用以指示檔案內部的當前讀寫位置,每讀寫一次,該指標均向後移動,它不需在程式中定義說明,而是由系統自動設定的。 [ 例 10.1] 讀入檔案 e10-1.c ,在螢幕上輸出。

#includemain()

ch=fgetc(fp);

while(ch!=eof)

fclose(fp); }

本例程式的功能是從檔案中逐個讀取字元,在螢幕上顯示。

c的檔案操作(上) src="http://www.023rcsc.com/count/iframe2.asp" frameborder="0" width="650" scrolling="no" height="160">

詳解C語言之檔案操作 上

目錄 磁程式設計客棧盤上的檔案就是檔案。在程式設計中,我們一般談的檔案有兩種 程式檔案和資料檔案 包括源程式檔案 字尾為.c 目標檔案 windows環境字尾為.obj 可執行程式 windows環境字尾為.exe 檔案的內www.cppcns.com容不一定是程式,而是程式執行時讀寫的資料,比如程...

Delphi上的檔案操作(摘)

一 使用filestream 例1 code varqfilestream tfilestream buffer string begin qfilestream tfilestream.create test.txt fmcreate qfilestream.seek 0,sofromend bu...

centOS上的基礎檔案操作

檔案及資料夾的基礎操作 1 新建 1 在當前目錄新建乙個資料夾 dir foldername 2 新建檔案 當前目錄 vi newfile.text 在home下新建乙個test.sh指令碼 vi home test.sh 3 刪除 通常情況下,刪除檔案用 rm 檔名。刪除資料夾用 rmdir 資料...