C語言檔案操作

2021-06-12 21:49:45 字數 4851 閱讀 8324

1,兩種檔案訪問方式(輸入,輸出方式)

順序訪問

直接訪問

2,資料的兩種存放形式

文字檔案

二進位制檔案

3.檔案指標

定義檔案型別指標變數的一般形式:

file *指標變數名;

例如:file *fp1,*fp2;

4.開啟檔案

在使用檔案之前,需開啟檔案.在c裡使用fopen函式開啟檔案.格式為:

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

此函式返回乙個指向file型別的指標.如:

file *fp;

fp=fopen("file_1","r");

如果呼叫成功,fp就指向file_1,否則返回為null,所以為了保證檔案的正確使用,要進行測試.採用如下語句:

if((fp=fopen("file_1","r"))==null)

最常用的檔案使用方式及其含義如下:

1,"r".為讀而開啟文字檔案.(不存在則出錯)

2,"rb".為讀而開啟二進位制檔案.

3,"w".為寫而開啟文字檔案.(若不存在則新建,反之,則從檔案起始位置寫,原內容將被覆蓋)

4,"wb".為寫而開啟二進位制檔案.

5,"a".為在檔案後面新增資料而開啟文字檔案.(若不存在,則新建;反之,在原檔案後追加)

6,"ab".為在檔案後面新增資料而開啟乙個二進位制檔案.

最常用的檔案使用方式及其含義如下:

7,"r+".為讀和寫而開啟文字檔案.(讀時,從頭開始;在寫資料時,新資料只覆蓋所佔的空間,其後不變)

8,"rb+".為讀和寫而開啟二進位制檔案.只是在隨後的讀寫時,可以由位置函式設定讀和寫的起始位置.

9,"w+".首先建立乙個新檔案,進行寫操作,隨後可以從頭開始讀.(若檔案存在,原內容將全部消失)

10,"wb+".功能與"w+"同.只是在隨後的讀寫時,可以由位置函式設定讀和寫的起始位置.

最常用的檔案使用方式及其含義如下:

11,"a+".功能與"a"相同;只是在檔案尾部新增新的資料後,可以從頭開始讀.

12,"ab+".功能與"a+"相同;只是在檔案尾部新增新資料之後,可以由位置函式設定開始讀的起始位置.

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

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

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

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

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

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

「rt+」    讀寫開啟乙個文字檔案,允許讀和寫。用fseek確定讀寫位置,寫多少覆蓋多少,後面的內容保留。因為磁碟空間是連續的,所以你不能在中間插入,在中間一旦寫入就是覆蓋與寫入內容等長的那些內容。

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

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

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

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

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

5.關閉檔案

當檔案的讀寫操作完成之後,使用fclose函式關閉檔案.格式如下:

fclose(檔案指標)

如:fclose(fp);

6.呼叫fgetc和fputc函式進行輸入和輸出

6.1呼叫fputc函式輸出乙個字元

呼叫形式為:

putc(ch,fp);

功能是:將字元ch寫到檔案指標fp所指的檔案中去.當輸出成功,putc函式返回所輸出的字元;否則,返回乙個eof值.eof是在stdio.h庫(函式檔案中定義的符號常量,其值等於-1).

呼叫fgetc和fputc函式進行輸入和輸出

例如:把從鍵盤輸入的文字按原樣輸出到名為file_1.dat檔案中,用字元@作為鍵盤輸入結束標誌.

#includevoid main()

ch=getchar();

while(ch!='@')

fclose(fpout);

}

6.2.呼叫fgetc函式輸入乙個字元

呼叫形式為:

ch=getc(pf);

功能是:從pf指定的檔案中讀如乙個字元,並把它作為函式值返回.

例如:把乙個已存在磁碟上的file_1.dat文字檔案中的內容,原樣輸出到終端螢幕上.

#includevoid main()

ch=fgetc(fpin);

while (ch!=eof)

fclose(fpin);

}

7.判斷檔案結束函式feof

eof可以作為文字檔案的結束標誌,但不能作為二進位制檔案的結束符.feof函式既可以判斷二進位制檔案,又可以判斷文字檔案.

例:編寫程式,用於把乙個文字檔案(源)複製到另乙個檔案(目的)中,源檔名和目的檔名由命令列輸入.命令形式如下:

可執行程式名 源檔名 目的檔名

#includevoid filecopy(file* ,file *);

void main(int argc,char *argv)

else if(argc>3)

printf("the file names too many!!\n");

else

printf("there are no file names for input or output!!\n");

}void filecopy(file *fpin,file *fpout)

}

8.fscanf函式和fprintf函式

fscanf函式

fscanf只能從文字檔案中按格式輸入,和scanf函式相似,只不過輸入的物件是磁碟上文字檔案中的資料.呼叫形式為:

fscanf(檔案指標,格式控制字串,輸入項表)

例如:fscanf(fp,"%d%d",&a,&b);

fscanf(stdin,"%d%d",&a,&b); 等價於scanf("%d%d",&a,&b);

fprintf函式

fprintf函式按格式將記憶體中的資料轉換成對應的字元,並以ascii**形式輸出到文字檔案中.fprintf函式和printf函式相似,只是將輸出的內容按格式存放到磁碟的文字檔案中.呼叫形式如下:

fprintf(檔案指標,格式控制字串,輸出項表)

如:fprintf(fp,"%d %d",x,y);

以下語句 fprintf(stdout,"%d %d",x,y)

9.fgets函式和fputs函式

1.fgets函式

fgets函式用來從檔案中讀入字串.呼叫形式如下:

fgets(str,n,fp);

函式功能是:從fp所指檔案中讀入n-1個字元放入str為起始位址的空間內;如果在未讀滿n-1個字元時,則遇到換行符或乙個eof結束本次讀操作,並已str作為函式值返回.

2,fputs函式

fput函式把字串輸出到檔案中.函式呼叫形式如下:

fputs(str,fp);

注意:為了便於讀入,在輸出字串時,應當人為的加諸如"\n"這樣的字串.

10.fread函式和fwrite函式

fread and fwrite函式用來讀,寫二進位制檔案.它們的呼叫形式如下:

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

buffer:要輸入或輸出的資料塊的首位址

count:每讀寫一次,輸入或輸出資料塊的個數

size:每個資料塊的位元組數

fp:檔案指標

例如有如下結構體:

struct stpers[30];

以下迴圈將把這30個元素中的資料輸出到fp所指檔案中.

for(i=0;i < 30; i++}

fwrite(pers[i],sizeof(struct st),1,fp);

11.檔案定位函式

1.fseek函式

fseek函式用來移動檔案位置指標到指定的位置上,接著的讀或寫操作將從此位置開始.函式的呼叫形式如下:

fseek(pf,offset,origin)

pf:檔案指標

offset:以位元組為單位的位移量,為長整形.

origin:是起始點,用來指定位移量是以哪個位置為基準的.

位移量的表示方法

識別符號 數字 代表的起始點

seek_set 0 檔案開始

seek_end 2 檔案末尾

seek_cur 1 檔案當前位置

假設pf已指向乙個二進位制檔案,則;

fseek(pf,30l,seek_set)

fseek(pf,-10l*sizeof(int),seek_end)

對於文字檔案,位移量必須是0;如:

fseek(pf,0l,seek_set)

fseek(pf,0l,seek_end)

2. ftell函式

ftell函式用以獲得檔案當前位置指標的位置,函式給出當前位置指標相對於檔案開頭的位元組數.如;

long t;

t=ftell(pf);

當函式呼叫出錯時,函式返回-1l.

我們可以通過以下方式來測試乙個檔案的長度:

fseek(fp,0l,seek_end);

t=ftell(fp);

3.rewind函式

呼叫形式為:

rewind(pf);

函式沒有返回值.函式的功能是使檔案的位置指標回到檔案的開頭.

**:

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 語言檔案操作

學 c以來都好幾年了,今天突然發現 c語言的檔案操作不會寫了,今天晚上睡不著,熬夜把檔案操作在複習一遍,重新大概總結一下 1 檔案的開啟 fopen 函式 fopen 函式來實現開啟檔案 fopen 函式呼叫方式通常為 file fp fp fopen 檔名,使用檔案方式 例如 fp fopen a...