c語言文件使用方式?
c語言中文件的使用方法
一.文件指針的定義
FILE *fp//注意FILE的大寫
二.文件的打開
fp=fopen("(路徑)文件名.文件格式后綴","文件的使用方法")//注意路徑下為//而不是/
三.文件的使用方法
?
1.“r” 模式:
1.1 打開文件進行只讀操作,即只能從文件讀取內容。
1.2 若欲操作的文件不存在,則打開失敗。
1.3 成功打開文件時,文件指針位于文件開頭。
1.4 打開文件后,不會清空文件內原有內容。
1.5 可從文件中任意位置讀取內容。
2."w" 模式:
2.1 打開文件進行“只寫”操作,即只能向文件寫入內容。
2.2 若欲操作的文件不存在,則新建文件。
2.3 成功打開文件時,文件指針位于文件開頭。
2.4 打開文件后,會清空文件內原有的內容。
2.5 可向文件中任意位置寫入內容,且進行寫入操作時,會覆蓋原有位置的內容。
3."a" 模式:
3.1 打開文件進行“追加”操作,即只能向文件寫入內容。
3.2 若欲操作的文件不存在,則新建文件。
3.3 成功打開文件時,文件指針位于文件結尾。
3.4 打開文件后,不會清空文件內原有內容。
3.5 只能向文件末尾追加(寫)內容。
4."r+"模式:
4.1 打開文件進行“讀寫”操作,即既可讀取,又可寫入。
4.2 若欲操作的文件不存在,則打開失敗。
4.3 成功打開文件時,文件指針位于文件開頭。
4.4 打開文件后,不會清空文件內原有內容。
4.5 無論是讀取內容還是寫入內容,都可在文件中任意位置進行,且進行寫入操作時,會覆蓋原有位置的內容。
5."w+"模式:
5.1 打開文件進行“讀寫”操作,即既可讀取,又可寫入。
5.2 若欲操作的文件不存在,則新建文件。
5.3 成功打開文件時,文件指針位于文件開頭。
5.4 打開文件后,會清空文件內原有的內容。
5.5 無論是讀取內容還是寫入內容,都可在文件中任意位置進行,且進行寫入操作時,會覆蓋原有位置的內容。
6."a+"模式:
6.1 打開文件進行“讀寫”操作,即既可讀取,又可寫入。
6.2 若欲操作的文件不存在,則新建文件。
6.3 成功打開文件時,文件指針位于文件結尾。
6.4 打開文件后,不會清空文件內原有內容。
6.5 讀取內容時,可以在任意位置進行,但寫入內容時,只會追加在文件尾部。
?
三.文件處理函數
A.fgetc\fputc(字符)
fgetc意為從文件指針stream指向的文件中讀取一個字符,讀取一個字節后,光標位置后移一個字節。
fgetc格式:
ch=fgetc(FILE *stream)
fputc意為將字符ch寫到文件指針fp所指向的文件的當前寫指針的位置。
fputc格式:
fputc(char c, FILE *fp)
B.fgets\fputs(字符串)
fgets函數功能為從指定的流中讀取數據,每次讀取一行。從指定的流 stream 讀取一行,并把它存儲在 str 所指向的字符串內。當讀取 (n-1) 個字符時,或者讀取到換行符時,或者到達文件末尾時,它會停止,具體視情況而定。
fgets格式:
fgetc(char *str, int n, FILE *stream)
fputs是一個函數,具有的功能是向指定的文件寫入一個字符串(不自動寫入字符串結束標記符‘\0’)。成功寫入一個字符串后,文件的位置指針會自動后移,函數返回值為非負整數;否則返回EOF(符號常量,其值為-1)。
fputs格式:
fputs(const char *str, FILE *stream)
返回值:該函數返回一個非負值,如果發生錯誤則返回 EOF(-1)。
(1)str:這是一個數組,包含了要寫入的以空字符終止的字符序列。
(2)stream:指向 FILE 對象的指針,該 FILE 對象標識了要被寫入字符串的流
C.數據塊的讀寫
fread\fwrite
fread從給定輸入流stream讀取最多count個對象到數組buffer中(相當于以對每個對象調用count次fgetc),把buffer當作unsigned char數組并順序保存結果。流的文件位置指示器前進讀取的字節數。
若出現錯誤,則流的文件位置指示器的位置不確定。若沒有完整地讀入最后一個元素,則其值不確定。
fread格式:
fread( void *buffer, size_t size, size_t count, FILE *stream )
fwrite() 是 C 語言標準庫中的一個文件處理函數,功能是向指定的文件中寫入若干數據塊,如成功執行則返回實際寫入的數據塊數目。該函數以二進制形式對文件進行操作,不局限于文本文件。
fwrite格式:
fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
返回值:返回實際寫入的數據塊數目
(1)buffer:是一個指針,對fwrite來說,是要獲取數據的地址;
(2)size:要寫入內容的單字節數;
(3)count:要進行寫入size字節的數據項的個數;
(4)stream:目標文件指針;
(5)返回實際寫入的數據項個數count。
D.fscanf\fprintf
fscanf 其功能為根據數據格式(format),從輸入流(stream)中讀入數據,存儲到argument中,遇到空格和換行時結束。
fscanf格式:
fscanf(FILE * stream, const char * format, [argument...])
fprintf()函數根據指定的格式(format),向輸出流(stream)寫入數據(argument)。
fprintf格式:
fprintf (FILE* stream, const char*format, [argument])
stream-- 這是指向 FILE 對象的指針,該 FILE 對象標識了流。
format-- 這是 C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標簽,format 標簽可被隨后的附加參數中指定的值替換,并按需求進行格式化。
format 標簽屬性是%[flags][width][.precision][length]specifier
[argument]:附加參數列表
注意在格式中有讀取長度的n時,系統會預留一個給’\0’,如果欲讀取10個,則n在定義時,應該定義為10+1.
每一次文件引用結束后都要記得關閉打開了的文件
fclose(fp)//fp為定義的文件指針