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