C學習筆記(8)--- 文件讀寫,

1.C 文件讀寫:html

 

 

一個文件,不管它是文本文件仍是二進制文件,都是表明了一系列的字節。C 語言不只提供了訪問頂層的函數,也提供了底層(OS)調用來處理存儲設備上的文件。數組

 

a.打開文件:安全

 

FILE *fopen( const char * filename, const char * mode );ide

filemame是文件名,mode是指模式---好比說 "r" 指打開一個已有的文本文件,容許讀取文件。詳情網上隨便都有。函數

 

 sub:  若是fopen顯示不安全,就聲明一個        #define _CRT_SECURE_NO_WARNINGSspa

 

b.關閉文件:指針

 

int fclose( FILE *fp );code

若是成功關閉文件,fclose( ) 函數返回零,若是關閉文件時發生錯誤,函數返回 EOF。這個函數實際上,會清空緩衝區中的數據,關閉文件,並釋放用於該文件的全部內存。EOF 是一個定義在頭文件 stdio.h 中的常量。orm

 

c.寫入文件:htm

 

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

相關文章
相關標籤/搜索