1.C 檔案讀寫:
一個檔案,無論它是文本檔案還是二進制檔案,都是代表了一系列的位元組,C 語言不僅提供了訪問頂層的函式,也提供了底層(OS)呼叫來處理存盤設備上的檔案,
a.打開檔案:
FILE *fopen( const char * filename, const char * mode );
filemame是檔案名,mode是指模式---比如說 "r" 指打開一個已有的文本檔案,允許讀取檔案,詳情網上隨便都有,
sub: 如果fopen顯示不安全,就宣告一個 #define _CRT_SECURE_NO_WARNINGS
b.關閉檔案:
int fclose( FILE *fp );
如果成功關閉檔案,fclose( ) 函式回傳零,如果關閉檔案時發生錯誤,函式回傳 EOF,這個函式實際上,會清慷訓沖區中的資料,關閉檔案,并釋放用于該檔案的所有記憶體,EOF 是一個定義在頭檔案 stdio.h 中的常量,
c.寫入檔案:
int fputc( int c, FILE *fp );
函式 fputc() 把引數 c 的字符值寫入到 fp 所指向的輸出流中,如果寫入成功,它會回傳寫入的字符,如果發生錯誤,則會回傳 EOF,
int fputs( const char *s, FILE *fp );
函式 fputs() 把字串 s 寫入到 fp 所指向的輸出流中,如果寫入成功,它會回傳一個非負值,如果發生錯誤,則會回傳 EOF,您也可以使用:
int fprintf(FILE *fp,const char *format, ...)
函式來寫把一個字串寫入到檔案中,
d.讀取檔案:
下面是從檔案讀取單個字符的最簡單的函式
int fgetc( FILE * fp );
如果是字串:
char *fgets( char *buf, int n, FILE *fp );
函式 fgets() 從 fp 所指向的輸入流中讀取 n - 1 個字符,它會把讀取的字串復制到緩沖區 buf,并在最后追加一個 null 字符來終止字串,
如果這個函式在讀取最后一個字符之前就遇到一個換行符 '\n' 或檔案的末尾 EOF,則只會回傳讀取到的字符,包括換行符,
e. 二進制 I/O 函式:
下面兩個函式用于二進制輸入和輸出:
size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file); size_t fwrite(const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
這兩個函式都是用于存盤塊的讀寫 - 通常是陣列或結構體,
f.在指定位置開始讀取:
fseek 可以移動檔案指標到指定位置讀,或插入寫
具體:
int fseek(FILE *stream, long offset, int whence);
fseek 設定當前讀寫點到 offset 處, whence 可以是 SEEK_SET,SEEK_CUR,SEEK_END 這些值決定是從檔案頭、當前點和檔案尾計算偏移量 offset,
你可以定義一個檔案指標 FILE *fp,當你打開一個檔案時,檔案指標指向開頭,你要指到多少個位元組,只要控制偏移量就好,例如, 相對當前位置往后移動一個位元組:fseek(fp,1,SEEK_CUR); 中間的值就是偏移量, 如果你要往前移動一個位元組,直接改為負值就可以:
fseek(fp,-1,SEEK_CUR);
注意: 只有用 r+ 模式打開檔案才能插入內容,w 或 w+ 模式都會清空掉原來檔案的內容再來寫,a 或 a+ 模式即總會在檔案最尾添加內容,哪怕用 fseek() 移動了檔案指標位置,
參考:https://www.runoob.com/cprogramming/c-file-io.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61749.html
標籤:C
