打開文件
您可以使用 fopen( ) 函數來創建一個新的文件或者打開一個已有的文件,這個調用會初始化類型 FILE 的一個對象
FILE *fopen( const char * filename, const char * mode );
在這裏,filename 是字符串,用來命名文件,訪問模式 mode 的值可以是下列值中的一個:
【r】打開一個已有的文本文件,允許讀取文件。
【w】打開一個文本文件,允許寫入文件。如果文件不存在,則會創建一個新文件。在這裏,您的程序會從文件的開頭寫入內容。如果文件存在,則該會被截斷爲零長度,重新寫入。
【a】打開一個文本文件,以追加模式寫入文件。如果文件不存在,則會創建一個新文件。在這裏,您的程序會在已有的文件內容中追加內容。
【r+】打開一個文本文件,允許讀寫文件。
【w+】打開一個文本文件,允許讀寫文件。如果文件已存在,則文件會被截斷爲零長度,如果文件不存在,則會創建一個新文件。
【a+】打開一個文本文件,允許讀寫文件。如果文件不存在,則會創建一個新文件。讀取會從文件的開頭開始,寫入則只能是追加模式。
如果處理的是二進制文件,則需使用下面的訪問模式來取代上面的訪問模式
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
關閉文件
如果成功關閉文件,fclose( ) 函數返回零,如果關閉文件時發生錯誤,函數返回 EOF。這個函數實際上,會清空緩衝區中的數據,關閉文件,並釋放用於該文件的所有內存。EOF 是一個定義在頭文件 stdio.h 中的常量。
int fclose( FILE *fp );
寫入文件
1.目錄必須事先存在
2.文件寫會有緩衝區,可以使用fflush(fp); ,刷新緩衝區,但平臺有差異,通過關閉文件和關閉程序也可以實現
寫字符,失敗返回EOF
int fputc( int c, FILE *fp );
寫字符串,失敗返回EOF
int fputs( const char *s, FILE *fp );
int fprintf(FILE *fp,const char *format, ...)
讀文件
讀字符
int fgetc( FILE * fp );
讀字符串
char *fgets( char *buf, int n, FILE *fp ); //n和換行符決定讀取的內容
int fscanf(FILE *fp, const char *format, ...) //遇到空格結束
例子
寫文件
#include <stdio.h> int main() { FILE *fp = NULL; fp = fopen("./dong.txt", "w+"); fprintf(fp, "My name is %s\n","DongXiaoDong"); fputs("123 du du du du \n", fp); printf("寫入文件完成\r\n"); fclose(fp); }
讀文件
#include <stdio.h> int main() { FILE *fp = NULL; char buff[255]; fp = fopen("./dong.txt", "r"); fscanf(fp, "%s", buff);//空格結束 printf("1: %s\n", buff ); fgets(buff, 255, (FILE*)fp);//換行符結束 printf("2: %s\n", buff ); fgets(buff, 255, (FILE*)fp); printf("3: %s\n", buff ); fclose(fp); }
參考:菜鳥教程