檔案操作函式

2021-09-19 23:37:34 字數 3236 閱讀 5287

fopenfclose函式

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

函式原型為file* fopen(const char* filepath, const char* mode)和int fclose(file* file)。檔案開啟成功後,會返回指向流的檔案指標,如果開啟失敗則返回null,最後一定要用fclose關閉檔案。一般是這樣使用:

#define _crt_secure_no_warnings

#include #include #include int main()

printf("%p\n", fp);

fclose(fp);

system("pause");

return 0;

}

檔案使用方式 含義 如果指定檔案不存在

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

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

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

「rb」(唯讀) 為了輸入資料,開啟乙個二進位制檔案 出錯

「wb」(只寫) 為了輸出資料,開啟乙個二進位制檔案 建立乙個新的檔案

「ab」(追加) 向乙個二進位制檔案尾新增資料 出錯

「r+」(讀寫) 為了讀和寫,開啟乙個文字檔案 出錯

「w+」(讀寫) 為了讀和寫,建議乙個新的檔案 建立乙個新的檔案

「a+」(讀寫) 開啟乙個檔案,在檔案尾進行讀寫 建立乙個新的檔案

「rb+」(讀寫) 為了讀和寫開啟乙個二進位制檔案 出錯

「wb+」(讀寫) 為了讀和寫,新建乙個新的二進位制檔案 建立乙個新的檔案

「ab+」(讀寫) 開啟乙個二進位制檔案,在檔案尾進行讀和寫 建立乙個新的檔案

fread函式

用於讀取檔案流,原型為size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);。

ptr 指向大小至少為(size_t count)個位元組的記憶體塊的指標,轉換為void *。

size 是每次讀取的位元組數

count 是讀取次數

strean 指向指定輸入流的file物件的指標。

首先編輯好檔案內容

其次按照r方式讀檔案

#define _crt_secure_no_warnings

#include #include #include int main()

char buf[1024] = ;//定義緩衝區

fread(buf, 1, 4, fp);

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

fclose(fp);

system("pause");

return 0;

}

fwrite函式

函式原型:int fseek(file *stream, long offset, int fromwhere);

ptr 指向要寫入的元素陣列的指標,轉換為const void *。

size 是每次讀取的位元組數

count 是讀取次數

strean 指向指定輸出流的file物件的指標。

按照w方式寫檔案

#define _crt_secure_no_warnings

#include #include #include int main()

char buf[1024] = "heihei";

fwrite(buf, 1, 6, fp);

fclose(fp);

system("pause");

return 0;

}

fgets函式

函式原型char* fgets(char * s, int num,file *stream);

str 指向複製字串讀取的char陣列的指標。

num 要複製到str的最大字元數(包括終止空字元)。

stream 指向標識輸入流的file物件的指標。

返回值成功時,函式返回str。

如果在嘗試讀取字元時遇到檔案結尾,則設定eof指示符(feof)。如果在讀取任何字元之前發生這種情況,則返回的指標是空指標(並且str的內容保持不變)。

如果發生讀取錯誤,則設定錯誤指示符(ferror)並返回空指標(但str指向的內容可能已更改)。

#define _crt_secure_no_warnings

#include #include #include int main()

char buf[50];

while (fgets(buf, 50, fp) != null)

fclose(fp);

system("pause");

return 0;

}

fseek函式

函式原型:int fseek(file stream, long int offset, int origin);

stream 指向標識流的file物件的指標。

offset 二進位制檔案:從原點偏移的位元組數。

文字檔案:零或ftell返回的值。

orgin 位置用作偏移的參考。它由中定義的以下常量之一指定,專門用作此函式的引數:

不變 參考位置

seek_set 檔案開頭

seek_cur 檔案指標的當前位置

seek_end 檔案結束

*允許庫實現無意義地支援seek_end(因此,使用它的**沒有真正的標準可移植性)。

返回值如果成功,該函式返回零。

否則,它返回非零值。

如果發生讀或寫錯誤,則設定錯誤指示符(ferror)。

fseek(fp, 100l, seek_set);把stream指標移動到離檔案開頭100位元組處;

fseek(fp, 100l, seek_cur);把stream指標移動到離檔案當前位置位元組處;

fseek(fp, -100l, seek_end);把stream指標移動到離檔案尾100位元組處;

檔案操作函式

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 和 都認 ...

檔案操作函式

1.什麼是檔案 磁碟上的檔案是檔案。但是在程式設計中,我們一般談的檔案有兩種 程式檔案 資料檔案 1 程式檔案 包括源程式檔案 字尾為.c 目標檔案 windows環境字尾為.obj 可執行程式 windows環境字尾 為.exe 2 資料檔案 檔案的內容不一定是程式,而是程式執行時讀寫的資料,比如...