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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/4/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言文件读写常用函数总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C語(yǔ)言文件讀寫常用函數(shù)總結(jié)

有點(diǎn)小頭疼這幾天復(fù)習(xí),可是總是有些小可愛問(wèn)有關(guān)C語(yǔ)言文件方面的內(nèi)容,在此寫篇博文一勞永逸。

目錄

  • C語(yǔ)言文件讀寫常用函數(shù)總結(jié)
    • fopen函數(shù)
    • fclose函數(shù)
    • fseek函數(shù)
    • fprintf函數(shù)
    • fsanf函數(shù)
    • feof函數(shù)
    • fgetc函數(shù)
    • fputc函數(shù)
    • fwrite函數(shù)
    • fread函數(shù)

fopen函數(shù)

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

fclose函數(shù)

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

fseek函數(shù)

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

fprintf函數(shù)

  • 頭文件:stdio.h

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

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

  • 注意:fprintf( )會(huì)根據(jù)參數(shù)format 字符串來(lái)轉(zhuǎn)換并格式化數(shù)據(jù),然后將結(jié)果輸出到參數(shù)stream 指定的文件中,直到出現(xiàn)字符串結(jié)束(’\0’)為止。

  • 參數(shù):

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

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

fsanf函數(shù)

  • 頭文件:stdio.h

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

  • 作用: 從一個(gè)流中執(zhí)行格式化輸入,fscanf遇到空格和換行時(shí)結(jié)束,注意空格時(shí)也結(jié)束。這與fgets有區(qū)別,fgets遇到空格不結(jié)束。(和sanf類似不過(guò)多了第一個(gè)參數(shù)用來(lái)找文件,scanf需要我們從鍵盤輸入,fscanf文件里面的內(nèi)容相當(dāng)于我們鍵盤輸入的內(nèi)容)

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

  • 運(yùn)用

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

feof函數(shù)

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

fgetc函數(shù)

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

fputc函數(shù)

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

fwrite函數(shù)

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

fread函數(shù)

  • 頭文件:stdio.h

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

  • 作用: 從給定輸入流stream讀取最多count個(gè)對(duì)象到數(shù)組buffer中(相當(dāng)于對(duì)每個(gè)對(duì)象調(diào)用size次fgetc),把buffer當(dāng)作unsigned char數(shù)組并順序保存結(jié)果。(也就是從文件中讀取內(nèi)容)

  • 注意: fread不區(qū)分文件尾和錯(cuò)誤,因此調(diào)用者必須用feof和ferror才能判斷發(fā)生了什么。

  • 參數(shù):

    • buffer:
      指向要讀取的數(shù)組中首個(gè)對(duì)象的指針
    • size
      每個(gè)對(duì)象的大小(單位是字節(jié))
    • count
      要讀取的對(duì)象個(gè)數(shù)
    • stream
      輸入流
  • 返回值:返回成功讀取的對(duì)象個(gè)數(shù),若出現(xiàn)錯(cuò)誤或到達(dá)文件末尾,則可能小于count。
    若size或count為零,則fread返回零且不進(jìn)行其他動(dòng)作。

  • 運(yùn)用

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

不夠完整還請(qǐng)見諒,若有錯(cuò)誤,還請(qǐng)指正。希望對(duì)你有所幫助,昂!!!

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。