檔案操作函式

2021-09-26 14:42:10 字數 2246 閱讀 7193

1.什麼是檔案

磁碟上的檔案是檔案。

但是在程式設計中,我們一般談的檔案有兩種:程式檔案、資料檔案

(1)程式檔案

包括源程式檔案(字尾為.c),目標檔案(windows環境字尾為.obj),可執行程式(windows環境字尾

為.exe)。

( 2 )資料檔案

檔案的內容不一定是程式,而是程式執行時讀寫的資料,比如程式執行需要從中讀取資料的檔案,或者輸出內

容的檔案。

2.操作函式

(1)fopen開啟函式和fclose關閉函式

file *fopen(const char *filename, const char *mode);

其功能是使用給定的模式 mode 開啟 filename 所指向的檔案。檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回 null,並把錯誤**存在 error 中。該函式位於c 標準庫中。

int fclose( file *fp );

fclose是乙個函式名,功能是關閉乙個流。注意:使用fclose()函式就可以把緩衝區內最後剩餘的資料輸出到核心緩衝區,並釋放檔案指標和有關的緩衝區。

常用開啟方式如下:

「r」(唯讀) 為了輸入資料,開啟乙個已經存在的文字檔案

「w」(只寫) 為了輸出資料,開啟乙個文字檔案

「a」(追加) 向文字檔案尾新增資料

#include int main ()

return 0;

}

(2)fseek函式

檔案的隨機讀寫

int fseek ( file * stream, long int offset, int origin );

如果執行成功,stream將指向以fromwhere為基準,偏移offset(指標偏移量)個位元組的位置,函式返回0。如果執行失敗(比如offset取值大於等於210241024*1024,即long的正數範圍2g),則不改變stream指向的位置,函式返回乙個非0值。

fseek函式和lseek函式類似,但lseek返回的是乙個off_t數值,而fseek返回的是乙個整型。

#include int main ()

(3)ftell函式

返回檔案指標相對於起始位置的偏移量

long int ftell ( file * stream );

函式 ftell 用於得到檔案位置指標當前位置相對於檔案首的偏移位元組數。在隨機方式訪問檔案時,由於檔案位置頻繁的前後移動,程式不容易確定檔案的當前位置。

該函式對大於231-1檔案,即:2.1g以上的檔案操作時可能出錯。

#include int main ()

return 0;

}

(4)rewind函式

讓檔案指標的位置回到檔案的起始位置

void rewind ( file * stream );

c 程式中的庫函式,功能是將檔案內部的指標重新指向乙個流的開頭

#include int main ()

(5)檔案結束判定

被錯誤使用的feof

牢記:在檔案讀取過程中,不能用feof函式的返回值直接用來判斷檔案的是否結束。

而是應用於當檔案讀取結束的時候,判斷是讀取失敗結束,還是遇到檔案尾結束。

文字檔案讀取是否結束,判斷返回值是否為eof (fgetc),或者null(fgets)

例如:fgetc判斷是否為eof.

fgets判斷返回值是否為null.

#include #include int main(void)

//fgetc 當讀取失敗的時候或者遇到檔案結束的時候,都會返回eof

while ((c = fgetc(fp)) != eof) // 標準c i/o讀取檔案迴圈

//判斷是什麼原因結束的

if (ferror(fp))

puts("i/o error when reading");```

else if (feof(fp))

puts("end of file reached successfully");

fclose(fp);

}

檔案操作函式

1,feof 檢查檔案流是否讀到了檔案尾 相關函式 fopen,fgetc,fgets,fread 表頭檔案 include 定義函式 int feof file stream 函式說明 feof 用來偵測是否讀取到了檔案尾,尾數stream為fopen 所返回之檔案指標。如果已到檔案尾則返回非零值...

檔案操作函式

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

檔案操作函式

fopenfclose函式 系統需要在記憶體中為每個讀寫的檔案開闢一段快取,快取中儲存檔案資訊的是file結構體,開啟檔案時就會獲得指向file的指標。為什麼要用快取呢,因為硬碟讀取時很慢的,機械硬碟的讀寫時間都是毫秒級,而記憶體讀寫是納秒級的,差了一百萬倍。函式原型為file fopen cons...