c檔案操作

2021-07-08 12:09:49 字數 4366 閱讀 8237

1.函式原型

file *fopen(char *pname,char *mode)
2.功能說明

按照mode 規定的方式,開啟由pname指定的檔案。若找不到由pname指定的相應檔案,就按以下方式之一處理:

(1) 此時如mode 規定按寫方式開啟檔案,就按由pname指定的名字建立乙個新檔案;

(2) 此時如mode 規定按讀方式開啟檔案,就會產生乙個錯誤。

開啟檔案的作用是:

(1)分配給開啟檔案乙個file 型別的檔案結構體變數,並將有關資訊填入檔案結構體變數;

(2)開闢乙個緩衝區;

(3)呼叫作業系統提供的開啟檔案或建立新檔案功能,開啟或建立指定檔案;

file *:指出fopen是乙個返回檔案型別的指標函式;

3.引數說明

pname:是乙個字元指標,它將指向要開啟或建立的檔案的檔名字串。

mode:是乙個指向檔案處理方式字串的字元指標,指出開啟的方式:

補充:

t:text文字檔案

b:二進位制檔案

各種模式可以組合:

rt,rt+,wt,rb,wb,at,ab。。。

//舉例說明:

file *fin, *fout;

fin = fopen("text1.txt", "r");

if (!fin)

printf("open file 1 failed! \n");

fout = fopen("text2.txt", "w");

if (!fopen)

printf("open file2 failed! \n");

4.返回值

正常返回:被開啟檔案的檔案指標。

異常返回:null,表示開啟操作不成功。

5,要說明的是:c語言將計算機的輸入輸出裝置都看作是檔案。例如,鍵盤檔案、螢幕檔案等。ansi c標準規定,在執行程式時系統先自動開啟鍵盤、螢幕、錯誤三個檔案。這三個檔案的檔案指標分別是:標準輸入stdin、標準輸出stdout和標準出錯 stderr。

要注意的是讀寫完成後一定要記得關閉檔案否則資料可能沒儲存
1. 函式原型

int fclose(file *fp);

2. 功能說明

關閉由fp指出的檔案。此時呼叫作業系統提供的檔案關閉功能,關閉由fp->fd指出的檔案;釋放由fp指出的檔案型別結構體變數;返回操作結果,即0或eof。

3. 引數說明

fp:乙個已開啟檔案的檔案指標。

4. 返回值

正常返回:0。

異常返回:eof,表示檔案在關閉時發生錯誤。

例如:

int n=fclose(fp);

//當然也不一定要檢測,可以直接寫出來:

fclose(fin);

fclose(fout);

a. 從檔案中讀取乙個字元

1. 函式原型

int fgetc(file *fp);
2. 功能說明

從fp所指檔案中讀取乙個字元。

3. 引數說明

fp:這是個檔案指標,它指出要從中讀取字元的檔案。

4. 返回值

正常返回: 返回讀取字元的**。

非正常返回:返回eof。例如,要從」寫開啟」檔案中讀取乙個字元時,會發生錯誤而返回乙個eof。

5. 例項

ch = fgetc(fin);

while (ch != eof)

b. 寫乙個字元到檔案中去

1. 函式原型

int fputc(int ch,file *fp)
2. 功能說明

把ch中的字元寫入由fp指出的檔案中去。

3. 引數說明

ch:是乙個整型變數,記憶體要寫到檔案中的字元(c語言中整型量和字元量可以通用)。

fp:這是個檔案指標,指出要在其中寫入字元的檔案。

4. 返回值

正常返回: 要寫入字元的**。

非正常返回:返回eof。例如,要往」讀開啟」檔案中寫乙個字元時,會發生錯誤而返回乙個eof。

5. 例項

//將in指向的檔案複製到out指向的檔案中去

ch=fgetc(in); //從in所指檔案的當前指標位置讀取乙個字元

while(ch!=eof) //判斷剛讀取的字元是否是檔案結束符

//完成將in所指檔案的內容寫入(複製)到out所指檔案中

fclose(in); //關閉in所指檔案

fclose(out); //關閉out所指檔案

字串:

c. 從檔案中讀取乙個字串

1. 函式原型

char *fgets(char *str,int szie,file *fp)
2. 功能說明

從由fp指出的檔案中讀取n-1個字元,並把它們存放到由str指出的字元陣列中去,最後加上乙個字串結束符』\0』。

3. 引數說明

str:接收字串的記憶體位址,可以是陣列名,也可以是指標。

n: 指出要讀取字元的個數。

fp:這是個檔案指標,指出要從中讀取字元的檔案。

4. 返回值

正常返回:返回字串的記憶體首位址,即str的值。

非正常返回:返回乙個null值,此時應當用feof()或ferror()函式來判別是讀取到了檔案尾,還是發生了錯誤。例如,要從」寫開啟」檔案中讀取字串,將

發生錯誤而返回乙個null值。

d. 寫乙個字串到檔案中去

1. 函式原型

int fputs(char *str,file *fp)
2. 功能說明

把由str指出的字串寫入到fp所指的檔案中去。

3. 引數說明

str:指出要寫到檔案中去的字串。

fp:這是個檔案指標,指出字串要寫入其中的檔案。

4. 返回值

正常返回: 寫入檔案的字元個數,即字串的長度。

非正常返回:返回乙個null值,此時應當用feof()或ferror()函式來判別是讀取到了檔案尾,還是發生了錯誤。例如,要往乙個」讀開啟」 檔案中寫字串時,會發生錯誤而返回乙個null值。

//example:將乙個檔案的內容以追加形式新增到另乙個檔案

#include

#define size 512

void main()

if ((fp2 = fopen("text.txt", "r")) == null)

// 讀入一行立即寫出,直到檔案結束

while (fgets(buffer, size, fp1) != null)

printf("%s\n", buffer);

while (fgets(buffer, size, fp2) != null)

fputs(buffer, fp1);

fclose(fp1);

fclose(fp2);

if ((fp1 = fopen("text1.txt", "r")) == null)

while (fgets(buffer, size, fp1) != null)

printf("%s\n", buffer);

fclose(fp1);

}

int feof(file *fp)

2. 功能說明

在文字檔案(ascii檔案)中可以用值為-1的符號常量eof來作為檔案的結束符。但是在二進位制檔案中-1往往可能是乙個有意義的資料,因此不能用它 來作為檔案的結束標誌。為了能有效判別檔案是否結束,ansi c提供了標準函式feof(),用來識別檔案是否結束。

3. 引數說明

fp:檔案指標。

4. 返回值

返回為非0值:已到檔案尾。

返回為0值:表示還未到檔案尾。

* 關於exit()函式

1. 函式原型

void exit(int status)

2. 功能說明

exit()函式使程式立即終止執行,同時將緩衝區中剩餘的資料輸出並關閉所有已經開啟的檔案。

3. 引數說明

status:為0值表示程式正常終止,為非0值表示乙個定義錯誤。

4. 返回值

無。

C 檔案操作與C 的檔案操作

c filestream 檔案流 主要用於使用二進位制方式讀寫檔案資料,可讀取任何檔案 建立filestream物件 e 建立filestream物件 filemode 指定系統開啟檔案的方式filestream fileaccess 指定檔案的訪問方式 read唯讀,write只寫,readwri...

C 檔案操作

c 追加檔案 sw.writeline 追逐理想 sw.writeline kzlll sw.writeline net筆記 sw.flush sw.close c 拷貝檔案 string orignfile,newfile file.copy orignfile,newfile,true c 刪除...

C 檔案操作

c 檔案操作 軒軒 發表於 2006 2 18 12 40 16 在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器...