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 資料...