15,檔案操作

2021-07-22 09:58:54 字數 2554 閱讀 1575

所有檔案都採用二進位制方式記錄數字 如果檔案裡的所有二進位制內容都對應字元則這種檔案叫文字檔案

除了文字檔案以外的所有檔案叫做二進位制檔案

文字檔案可以當作二進位制檔案使用

檔案操作的基本步驟

1.開啟檔案(fopen)

2.操作檔案(fread/fwrite)

3.關閉檔案(fclose)

fopen函式需要兩個引數

1.代表要開啟的檔案路徑

2.代表開啟檔案的方式(決定程式中可以對檔案做什麼操作)

開啟方式有如下選擇

"r"       只能察看檔案內容

只能從檔案頭開始察看 如果檔案不存在開啟會失敗

"r+"      比"r"多了修改功能

"w"       只能修改檔案內容不能察看 只能從檔案頭開始修改

如果檔案不存在就建立檔案 如果檔案已經存在就刪除檔案內容

"w+"      比"w"多了察看功能

"a"       只能修改檔案內容不能察看 在檔案原有內容後面追加新內容

如果檔案不存在就建立檔案 如果檔案存在不會修改檔案原有內容

"a+"      比"a"多了察看功能

"b"也是一種開啟方式 它可以和上面任何一種開啟方式混用 這個開啟方式表示程式中只能採用二進位制方式操作檔案

fopen函式的返回值是乙個位址,這個位址應該記錄在檔案指標裡 程式中只能使用檔案指標代表開啟的檔案

fopen函式如果開啟檔案失敗則返回值是null 一旦完成對檔案的操作之後必須使用fclose函式關閉檔案

fclose函式需要檔案指標作為引數 關閉檔案後檔案指標成為野指標,必須恢復成空指標

檔案操作分為兩種

1.把記憶體中一組連續儲存區的內容拷貝到檔案裡(寫檔案)

2.把檔案中一組連續位元組的內容拷貝到記憶體裡(讀檔案)

fread函式採用二進位制方式讀檔案內容

fwrite函式採用二進位制方式寫檔案內容

這兩個函式都需要四個引數

1.記憶體中第乙個儲存區的位址

2.記憶體中單個儲存區的大小

3.希望操作的儲存區個數

4.檔案指標

它們的返回值表示實際操作的儲存區個數

fprintf函式可以把資料按照格式記錄到文字檔案裡 這個函式的引數就是在printf函式引數的前面增加乙個檔案指標

fscanf函式可以按照格式從文字檔案裡獲得數字並記錄到儲存區里 它的引數就是在scanf函式引數的前面增加乙個檔案指標

計算機裡為每個開啟的檔案保留乙個整數,這個整數表示下一次讀寫操作的開始位置 這個位置一定在兩個相鄰的位元組之間

這個整數表示檔案頭開始到這個位置之間包含的位元組個數 這個整數叫做檔案的位置指標

每當從檔案中獲得n個位元組或向檔案裡寫入n個位元組後位置指標向後移動n個位置

ftell函式可以得到位置指標的數值

rewind函式可以把位置指標設定成檔案開頭

fseek函式可以把位置指標設定到檔案裡的任何位置

fseek函式裡需要設定乙個基準位置以及目標位置到基準位置的距離

seek_set    0       把檔案頭作為基準位置

seek_cur    1       把當前位置作為基準位置

seek_end    2       把檔案尾作為基準位置

如果目標位置在基準位置後則距離用非負數表示

如果目標位置在基準位置前則距離用負數表示

距離的絕對值就是兩個位置之間的位元組個數

**********=示例**********************=

#include

#include

#include

void write()

void read()

fseek(file,0,2);

printf("file byte:%ld\n",ftell(file));

fseek(file,0,0);

int size = 0;

char arr[5]=;

while(1)

printf("%s",arr);

}printf("\n");

}int main()

*****************************

#include

#include

#include

typedef structstudent;

void writeab()

student st;

st.id = 100;

st.salary = 1000.01;

st.name = "北極熊";

fwrite(&st,sizeof(student),1,file);

fclose(file);

file = null;

}void readab()

int size = 0;

while(1)

printf("id :%d\n",st.id);

printf("salary :%g\n",st.salary);

printf("name :%s\n",st.name);}}

int main()

15 檔案操作

define crt secure no warnings include 標準輸入輸出庫 include 系統庫 include define buf size 1024 typedef struct stu stu int fwritestr char pcfilename,char pc in...

1 檔案測試 2 檔案操作

1 檔案測試函式 2 檔案操作 新建檔案 fopen filename,w 以 寫 的方式開啟乙個不存在的檔案,就會新建該檔案 檔案刪除 unlink 檔案複製 copy filename,aaa bb.txt 盡量使用 和相對路徑,因為linux只認 也沒有磁碟分割槽,而windows 和 都認 ...

2012 6 6檔案操作

path 目錄和檔案操作的命名控制項system.io string changeextension string path,string extension 修改檔案的字尾,修改 支援字串層面的,沒有真的給檔案改名 將兩個路徑合成乙個路徑,比用 好,可以方便解決不加斜線的問題,自動處理路徑分隔符的...