C語言中對檔案的操作

2021-06-09 14:42:33 字數 4771 閱讀 2511

13.3 檔案的開啟與關閉

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

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

13.3.1 檔案的開啟(fopen函式)

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

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

其中,

「檔案指標名」必須是被說明為file 型別的指標變數;

「檔名」是被開啟檔案的檔名;

「使用檔案方式」是指檔案的型別和操作要求。

「檔名」是字串常量或字串陣列。

例如:

file *fp;

fp=("file a","r");

其意義是在當前目錄下開啟檔案file a,只允許進行「讀」操作,並使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): 寫

t(text): 文字檔案,可省略不寫

b(banary): 二進位制檔案

+: 讀和寫

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

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

4) 若要向乙個已存在的檔案追加新的資訊,只能用「a」方式開啟檔案。但此時該檔案必須是存在的,否則將會出錯。

5) 在開啟乙個檔案時,如果出錯,fopen將返回乙個空指標值null。在程式中可以用這一資訊來判別是否完成開啟檔案的工作,並作相應的處理。因此常用以下程式段開啟檔案:

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

這段程式的意義是,如果返回的指標為空,表示不能開啟c盤根目錄下的hzk16檔案,則給出提示資訊「error on open c:\ hzk16 file!」,下一行getch()的功能是從鍵盤輸入乙個字元,但不在螢幕上顯示。在這裡,該行的作用是等待,只有當使用者從鍵盤敲任一lose函式返回值為0。如返回非零值則表示有錯誤發生。

13.4 檔案的讀寫

對檔案的讀和寫是最常用的檔案操作。在c語言中提供了多種檔案讀寫的函式:

·字元讀寫函式 :fgetc和fputc

·字串讀寫函式:fgets和fputs

·資料塊讀寫函式:freed和fwrite

·格式化讀寫函式:fscanf和fprinf

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

13.4.1 字元讀寫函式fgetc和fputc

字元讀寫函式是以字元(位元組)為單位的讀寫函式。每次可從檔案讀出或向檔案寫入乙個字元。

1. 讀字元函式fgetc

fgetc函式的功能是從指定的檔案中讀乙個字元,函式呼叫的形式為:

字元變數=fgetc(檔案指標);

例如:

ch=fgetc(fp);

其意義是從開啟的檔案fp中讀取乙個字元並送入ch中。

對於fgetc函式的使用有以下幾點說明:

1) 在fgetc函式呼叫中,讀取的檔案必須是以讀或讀寫方式開啟的。

2) 讀取字元的結果也可以不向字元變數賦值,

例如:

fgetc(fp);

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

3) 在檔案內部有乙個位置指標。用來指向檔案的當前讀寫位元組。在檔案開啟時,該指標總是指向檔案的第乙個位元組。使用fgetc 函式後,該位置指標將向後移動乙個位元組。 因此可連續多次使用fgetc函式,讀取多個字元。應注意檔案指標和檔案內部的位置指標不是一回事。檔案指標是指向整個檔案的,須在程式中定義說明,只要不重新賦值,檔案指標的值是不變的。檔案內部的位置指標用以指示檔案內部的當前讀寫位置,每讀寫一次,該指標均向後移動,它不需在程式中定義說明,而是由系統自動設定的。

【例13.1】讀入檔案c1.doc,在螢幕上輸出。

#include

main()

ch=fgetc(fp);

while(ch!=eof)

fclose(fp);

} 本例程式的功能是從檔案中逐個讀取字元,在螢幕上顯示。程式定義了檔案指標fp,以讀文字檔案方式開啟檔案「d:\\jrzh\\example\\ex1_1.c」,並使fp指向該檔案。如開啟檔案出錯,給出提示並退出程式。程式第12行先讀出乙個字元,然後進入迴圈,只要讀出的字元不是檔案結束標誌(每上,再讀入下一字元。每讀一次,檔案內部的位置指標向後??本程式將顯示整個檔案。

2. 寫字元函式fputc

fputc函式的功能??為:

fputc(字元量,檔案指量或變數,例如:

fputc('a',fp);

其意putc函式的使用也要說明幾點:

1) 被寫入的檔案可以用寫、讀寫、追加方式開啟,用寫或讀寫方式??寫入字元從檔案首開始。如需保留原有檔案內容,希望寫入的字??被寫入的檔案若不存在,則建立該檔案。

2) 每寫入乙個字元,檔案內部位置指標向後移動乙個位元組。

3) fputc函式有乙個返回值,如寫入成功則返回寫入的字元,否則返回乙個eof。可用此來判斷寫符,寫入乙個檔案,再把該檔案內容讀出顯示在螢幕上。

#include

main()

printf(

"input a string:\n"

);ch=getchar();

while (ch!='\n')

rewind(fp);

ch=fgetc(fp);

while(ch!=eof)

printf(

"\n"

);fclose(fp);

} 程式中第6行以讀寫文字檔案方式開啟檔案string。程式第13行從鍵盤讀入乙個字元後進入迴圈,當讀入字元不為回車符時,則把該字元寫入檔案之中,然後繼續從鍵盤讀入下一字元。每輸入乙個字元,檔案內部位置指標向後移動乙個位元組。寫入完畢,該指標已指向檔案末。如要把檔案從頭讀出,須把指標移向檔案頭,程式第19行rewind函式用於把fp所指檔案的內部位置指標移到檔案頭。第20至25行用於讀出檔案中的一行內容。

【例13.3】把命令列引數中的前乙個檔名標識的檔案,複製到後乙個檔名標識的檔案中,如命令列中只有乙個檔名則把該檔案寫到標準輸出檔案(顯示器)中。

#include

main(int argc,char *argv)

if((fp1=fopen(argv[1],

"rt"

))==null)

附上初值後的內容,一百條;

向檔案裡面吸入資料,,,然後檔案讀出來時

為什麼會以28001,28005.28008的順序讀出,這些隱藏的都加上就完美了

無題 @2012-03-17 18:05:55  陳宣

狠狠地學習了一下 謝謝分享

無題 @2011-12-30 09:08:45  

在c中,如何把陣列裡的內容當檔名

無題 @2011-10-19 00:55:24  

學電腦 都要買什麼教材啊

給樓主找個錯 @2011-08-14 16:49:05  sky

#include

main()

printf("input a string:\n");

ch=getchar();

while (ch!='\n')

rewind(fp);

ch=fgetc(fp);

while(ch!=eof)

printf("\n");

fclose(fp);

} *************************************

file *fp=fopen("c:\\abc\\a.txt","w");

/*開啟c:\abc\資料夾中的a.txt檔案以便寫入資訊,如果檔案不存在,就在該位置新建這個檔案*

C語言中對檔案的操作

在c語言中對檔案的操作是通過file結構體來完成的。讀檔案 1 讀取檔案 fread 2 memset 用指定的字元來設定一塊buffer.可避免字串找不到結尾,也可避免增加不必要的字串長度 3 得到檔案的長度 ftell 它是得到檔案指標當前的位置,因為檔案指標隨檔案移動,所以指標當前位置就是檔案...

R 語言中對檔案的操作

由於最近在處理一些真實資料時涉及到巢狀的.tar.gz檔案的解壓,手動乙個乙個解壓過於麻煩。可以使用 shell 指令碼或者 bat 指令碼來做,但想嘗試使用 r 語言對其進行完全解壓,這裡就需要涉及到對檔案與資料夾的一些操作。網上已經有許多現有教程,這裡參考了很多網上的 不過會嘗試盡量寫得更加詳細...

c語言對檔案的操作

檔案使用方式 含義 r 唯讀 開啟乙個文字檔案,只允許讀資料 w 只寫 開啟或建立乙個文字檔案,只允許寫資料 a 追加 開啟乙個文字檔案,並在檔案末尾寫資料 rb 唯讀 開啟乙個二進位制檔案,只允許讀資料 wb 只寫 開啟或建立乙個二進位制檔案,只允許寫資料 ab 追加 開啟乙個二進位制檔案,並在檔...