C語言文件相關函數主要有以下幾種:
- FILE* fopen(char* filepath, char* mode);
打開文件函數,傳入文件地址和打開模式
文件打開模式包括
"r" 讀取
,"w" 寫入模式,將現有文件清空。如果不存在則創建文件
,"a" 附加模式,在文件末尾追加數據,不存在則創建文件
,"r+"更新模式,可讀可寫
,"w+"更新模式,可讀可寫,文件清空,不存在則創建文件
,"a+"更新模式,可讀可寫,末尾追加,不存在則創建文件,可以讀取全部數據,但只能在末尾追加
返回文件指針 - char getc(FILE* fp);
從fp所指文件中讀取一個字符,並返回。
與char getchar()的區別就是,此函數需要指定字符獲取源,而getchar()默認從stdin獲取輸入。
也就是說 char getchar() 等價於 char getc(stdin) 。 - putc(char ch, FILE* fp);
將字符ch放入fp所指文件。
與putchar(char ch)的區別就是,此函數需要指定字符目的文件,而putchar()默認將字符放入stdout。
也就是說 putchar(char ch) 等價於 putc(ch,stdout); - int fclose(FILE* fp);
關閉fp指定的文件,必要時刷新緩沖區。
成功返回0,失敗返回EOF。當硬盤存儲滿的時候失敗。 -
標准文件指針
stdin, 指向鍵盤
stdout, 指向屏幕
stderr, 指向屏幕 - fscanf(FILE* fp, const char* format, char* buf);
從fp所指文件中按照format格式將數據讀取到buf中。
與scanf(const char* format, char* buf);區別就是,fscanf(FILE* fp, const char* format, char* buf)可以指
定從哪里讀取數據。而scanf(const char* format, char* buf);默認從stdin讀取數據。
也就是說scanf(const char* format, char* buf);等價與 fscanf(stdin, const char* format, char* buf); - fprintf(FILE* fp, char* buf);
將buf中的數據寫入fp所指文件。
與printf(char* buf);區別就是,fprintf(FILE* fp, char* buf);可以指定將buf寫入哪里,而printf(char* buf);
默認寫入stdout。
也就是說fprintf(stdout, char* buf); 等價於 printf(char* buf); - fgets(char* buf, int stlen, FILE* fp);
從fp所指文件讀取一行或者讀取到文件結尾或者讀取strlen-1個字符放入buf中。
當讀取到EOF時返回NULL。 - fputs(char* buf, FILE* fp);
將buf寫入fp所指文件。因為fgets(char* buf, int stlen, FILE* fp);在讀取行的時候返回'\n',因此,此函數不會
添加回車。 - fseek(FILE* fp, long offset, seek_mod);
將fp所指文件指針調整到seek_mod規定的位置,並按照offset調整指針。
seek_mod:
SEEK_SET,文件開始
SEEK_CUR,當前指針
SEEK_END 文件結束
offset:可正可負 - ftell(FILE* fp);
返回fp所指文件指針當前位置
源碼示例:https://github.com/WeiAt931/C.git
