日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言文件读写常用函数总结

發布時間:2024/4/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言文件读写常用函数总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言文件讀寫常用函數總結

有點小頭疼這幾天復習,可是總是有些小可愛問有關C語言文件方面的內容,在此寫篇博文一勞永逸。

目錄

  • C語言文件讀寫常用函數總結
    • fopen函數
    • fclose函數
    • fseek函數
    • fprintf函數
    • fsanf函數
    • feof函數
    • fgetc函數
    • fputc函數
    • fwrite函數
    • fread函數

fopen函數

  • 頭文件:stdio.h
  • 原型: FILE *fopen(const char *filename, const char *mode);
  • 作用: 使用給定的模式 mode打開 filename 所指向的文件。
  • 參數:
    • filename: 所需打開文件的文件名。
    • mode: 訪問模式。
      • r :以只讀方式打開文件,該文件必須存在。
      • r+:以讀/寫方式打開文件,該文件必須存在。
      • rb+:以讀/寫方式打開一個二進制文件,只允許讀/寫數據。
      • rt+:以讀/寫方式打開一個文本文件,允許讀和寫。
      • w:打開只寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。
      • w+:打開可讀/寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。
      • a:以附加的方式打開只寫文件。若文件不存在,則會創建該文件;如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF 符保留)。
      • a+:以附加方式打開可讀/寫的文件。若文件不存在,則會創建該文件,如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF符不保留)。
      • wb:以只寫方式打開或新建一個二進制文件,只允許寫數據。
      • wb+:以讀/寫方式打開或新建一個二進制文件,允許讀和寫。
      • wt+:以讀/寫方式打開或新建一個文本文件,允許讀和寫。
      • at+:以讀/寫方式打開一個文本文件,允許讀或在文本末追加數據。
      • ab+:以讀/寫方式打開一個二進制文件,允許讀或在文件末追加數據。
參數功能
r以只讀方式打開文件,該文件必須存在。
r+以讀/寫方式打開文件,該文件必須存在。
rb+以讀/寫方式打開一個二進制文件,只允許讀/寫數據。
rt+以讀/寫方式打開一個文本文件,允許讀和寫。
w打開只寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。
w+打開可讀/寫文件,若文件存在則文件長度清為零,即該文件內容會消失;若文件不存在則創建該文件。
a以附加的方式打開只寫文件。若文件不存在,則會創建該文件;如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF 符保留)。
a+以附加方式打開可讀/寫的文件。若文件不存在,則會創建該文件,如果文件存在,則寫入的數據會被加到文件尾后,即文件原先的內容會被保留(EOF符不保留)。
wb以只寫方式打開或新建一個二進制文件,只允許寫數據。
wb+以讀/寫方式打開或新建一個二進制文件,允許讀和寫。
wt+以讀/寫方式打開或新建一個文本文件,允許讀和寫。
at+以讀/寫方式打開一個文本文件,允許讀或在文本末追加數據。
ab+以讀/寫方式打開一個二進制文件,允許讀或在文件末追加數據。
  • 返回值:
    文件順利打開后,指向該流的文件指針就會被返回。如果文件打開失敗則返回 NULL,并把錯誤代碼存在error中。
  • 運用
#include <stdio.h> #include <stdlib.h> int main() {FILE *fp;fp = fopen("abc.txt", "r");/* 以只讀的方式打開,"abc.txt"文件 */if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fclose(fp); /* 關閉文件 */fp = NULL; /* 需要指向空,否則會指向原打開文件地址 */return 0; }

fclose函數

  • 頭文件:stdio.h
  • 原型: int fclose( FILE *fp );
  • 作用: 把緩沖區內最后剩余的數據輸出到內核緩沖區,并釋放文件指針和有關的緩沖區。
  • 參數:
    • fp: 指向 FILE 對象的指針,該 FILE 對象指定了要被關閉的流
  • 返回值:如果流成功關閉,fclose 返回 0,否則返回EOF(-1)。
  • 運用:
int main() {FILE *fp;fp = fopen("abc.txt", "r");/* 以只讀的方式打開,"abc.txt"文件 */if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fclose(fp); /* 關閉文件 */fp = NULL; /* 需要指向空,否則會指向原打開文件地址 */return 0; }

fseek函數

  • 頭文件:stdio.h
  • 原型: int fseek(FILE *stream, long offset, int fromwhere);
  • 作用: 重定位流(數據流/文件)上的文件內部位置指針
    • 注意:文件指針指向文件/流。位置指針指向文件內部的字節位置,隨著文件的讀取會移動,文件指針如果不重新賦值將不會改變或指向別的文件。
  • 參數:
    • stream:文件指針
    • offset:偏移量,正數表示正向偏移,負數表示負向偏移
    • origin:設定從文件的哪里開始偏移,可能取值為:SEEK_CUR、 SEEK_END 或 SEEK_SET
      • SEEK_SET: 文件開頭
      • SEEK_CUR: 當前位置
      • SEEK_END: 文件結尾
        其中SEEK_SET,SEEK_CUR和SEEK_END對應數字依次為0,1和2.
  • 返回值:成功,返回0,失敗返回非0值,并設置error的值,可以用perror()函數輸出錯誤。
  • 運用
fseek(fp,100L,0); //把fp指針移動到離文件開頭100字節處;fseek(fp,100L,1); //把fp指針移動到離文件當前位置100字節處;fseek(fp,-100L,2); //把fp指針退回到離文件結尾100字節處。

fprintf函數

  • 頭文件:stdio.h

  • 原型: int fprintf (FILE* stream, const char*format, [argument])

  • 作用: 根據指定的格式(format),向輸出流(stream)寫入數據(argument)(和printf差不多,多了第一個參數,找到文件,printf是輸出東西到你的黑框框里面,這個是寫到文件里面)

  • 注意:fprintf( )會根據參數format 字符串來轉換并格式化數據,然后將結果輸出到參數stream 指定的文件中,直到出現字符串結束(’\0’)為止。

  • 參數:

    • stream :指向 FILE 對象的指針,該 FILE 對象標識了流。
    • format : C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標簽,format 標簽可被隨后的附加參數中指定的值替換,并按需求進行格式化。
    • [argument]:附加參數列表
  • 運用

FILE *fp;int a = 10;fp = fopen("abc.txt", "r+");/* 以讀/寫的方式打開,"abc.txt"文件 */if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fprintf(fp, "Hello world\n"); //向文件中寫入Hello world.fprintf(fp, "%d", a); //向文件中寫入a.fclose(fp); /* 關閉文件 */return 0;

fsanf函數

  • 頭文件:stdio.h

  • 原型: int fscanf(FILE *stream, char *format[,argument…]);

  • 作用: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。(和sanf類似不過多了第一個參數用來找文件,scanf需要我們從鍵盤輸入,fscanf文件里面的內容相當于我們鍵盤輸入的內容)

  • 返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。

  • 運用

//文件abc.txt里面是 10FILE *fp;int ;fp = fopen("abc.txt", "r+");/* 以讀/寫的方式打開,"abc.txt"文件 */if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fscanf(fp, "%d", &a); //從文件中讀出一個整型fclose(fp); /* 關閉文件 */return 0;

feof函數

  • 頭文件:stdio.h
  • 原型: int feof(FILE *stream);
  • 參數: 指向 FILE 對象的指針。
  • 作用: 判斷是否到達文件末尾
  • 返回值:如果文件結束,則返回非0值,否則返回0,
FILE *fp;fp = fopen("abc.txt", "r");//打開文件if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}if(feof(fp)) //判斷是否到達文件末尾printf("We have reached the end of file\n");fclose(fp);return 0;

fgetc函數

  • 頭文件:stdio.h
  • 原型: int fgetc(FILE *stream)
  • 參數: 指向 FILE 對象的指針。
  • 作用: 從文件指針stream指向的文件中讀取一個字符,讀取一個字節后,光標位置后移一個字節。
  • 返回值:該字符對應的ascll碼。如果讀到文件末尾或者讀取出錯時返回EOF
FILE *fp;int ch;fp = fopen("abc.txt", "r");//打開文件if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}ch = fgetc(fp); //將第一個字符讀取出來,對應ascll賦值給chfclose(fp);return 0;

fputc函數

  • 頭文件:stdio.h
  • 原型: int fputs(const char *s,FILE * stream)
  • 參數:
    • stream: 指向 FILE 對象的指針。
    • s: 寫入文件的字符
  • 作用: 向文件中寫入一個字符或一個字節的數據,文件內部寫指針會自動后移一個字節的位置。
  • 返回值:返回寫入文件的字符的ASCII碼值,出錯時,返回EOF
FILE *fp;int ch;fp = fopen("abc.txt", "r");//打開文件if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fputc(ch,fp);//將ch寫入文件fclose(fp);return 0;

fwrite函數

  • 頭文件:stdio.h
  • 原型: size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
  • 作用: 把ptr所指向的數組中的數據寫入到給定流stream中。
  • 參數:
    • ptr: 這是指向要被寫入的元素數組的指針,獲取數據地址。
    • size: 這是要被寫入的每個元素的大小,以字節為單位。
    • nmemb: 這是元素的個數,每個元素的大小為 size 字節。
    • stream: 這是指向 FILE 對象的指針,該 FILE 對象指定了一個輸出流。
  • 返回值:如果成功,該函數返回一個 size_t 對象,表示元素的總數,該對象是一個整型數據類型。如果該數字與 nmemb 參數不同,則會顯示一個錯誤。
int main() {FILE *fp;char msg[]="this is a test";char buf[20];fp = fopen("abc.txt", "r+");/* 以讀/寫的方式打開,"abc.txt"文件 */if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fwrite(msg,1,strlen(msg)+1,fp); //將msg寫入文件fp中 fseek(fp,0,SEEK_SET);//將fp指針移動到文件開頭處fread(buf,1,strlen(msg)+1,fp);//從文件中讀取出來strlen(msg)+1個字節東西,放入buf中printf("%s\n",buf);fclose(fp); /* 關閉文件 */fp = NULL; /* 需要指向空,否則會指向原打開文件地址 */system("pause");return 0; }

fread函數

  • 頭文件:stdio.h

  • 原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

  • 作用: 從給定輸入流stream讀取最多count個對象到數組buffer中(相當于對每個對象調用size次fgetc),把buffer當作unsigned char數組并順序保存結果。(也就是從文件中讀取內容)

  • 注意: fread不區分文件尾和錯誤,因此調用者必須用feof和ferror才能判斷發生了什么。

  • 參數:

    • buffer:
      指向要讀取的數組中首個對象的指針
    • size
      每個對象的大小(單位是字節)
    • count
      要讀取的對象個數
    • stream
      輸入流
  • 返回值:返回成功讀取的對象個數,若出現錯誤或到達文件末尾,則可能小于count。
    若size或count為零,則fread返回零且不進行其他動作。

  • 運用

int main() {FILE *fp;char msg[]="this is a test";char buf[20];fp = fopen("abc.txt", "r+");/* 以讀/寫的方式打開,"abc.txt"文件 */if (NULL == fp) /* 打開失敗 */{printf("錯誤!");exit(1); /* 中止程序 */}fwrite(msg,1,strlen(msg)+1,fp); //將msg寫入文件fp中 fseek(fp,0,SEEK_SET);//將fp指針移動到文件開頭處fread(buf,1,strlen(msg)+1,fp);//從文件中讀取出來strlen(msg)+1個字節東西,放入buf中printf("%s\n",buf);fclose(fp); /* 關閉文件 */fp = NULL; /* 需要指向空,否則會指向原打開文件地址 */system("pause");return 0; }

不夠完整還請見諒,若有錯誤,還請指正。希望對你有所幫助,昂!!!

總結

以上是生活随笔為你收集整理的C语言文件读写常用函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。