国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
文件讀寫(xiě)
c++文件讀寫(xiě)2009-06-15 15:06
1.fopen()


  fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen實(shí)現(xiàn)三個(gè)功能:為使用而打開(kāi)一個(gè)流,把一個(gè)文件和此流相連接,給此流返回一個(gè)FILR指針。

  參數(shù)filename指向要打開(kāi)的文件名,mode表示打開(kāi)狀態(tài)的字符串,其取值如下:

  字符串 含義

  "r" 以只讀方式打開(kāi)文件

  "w" 以只寫(xiě)方式打開(kāi)文件

  "a" 以追加方式打開(kāi)文件

  "r+" 以讀/寫(xiě)方式打開(kāi)文件,如無(wú)文件出錯(cuò)

  "w+" 以讀/寫(xiě)方式打開(kāi)文件,如無(wú)文件生成新文件

  一個(gè)文件可以以文本模式或二進(jìn)制模式打開(kāi),這兩種的區(qū)別是:在文本模式中回車被當(dāng)成一個(gè)字符’\n’,而二進(jìn)制模式認(rèn)為它是兩個(gè)字符0x0D,0x0A;如果在文件中讀到0x1B,文本模式會(huì)認(rèn)為這是文件結(jié)束符,也就是二進(jìn)制模型不會(huì)對(duì)文件進(jìn)行處理,而文本方式會(huì)按一定的方式對(duì)數(shù)據(jù)作相應(yīng)的轉(zhuǎn)換。

  系統(tǒng)默認(rèn)的是以文本模式打開(kāi),可以修改全部變量_fmode的值來(lái)修改這個(gè)設(shè)置,例如_fmode=O_TEXT;就設(shè)置默認(rèn)打開(kāi)方式為文本模式;而_fmode=O_BINARY;則設(shè)置默認(rèn)打開(kāi)方式是二進(jìn)制模式。

  我們也可以在模式字符串中指定打開(kāi)的模式,如"rb"表示以二進(jìn)制模式打開(kāi)只讀文件,"w+t"或"wt+"表示以文本模式打開(kāi)讀/寫(xiě)文件。

  此函數(shù)返回一個(gè)FILE指針,所以申明一個(gè)FILE指針后不用初始化,而是用fopen()來(lái)返回一個(gè)指針并與一個(gè)特定的文件相連,如果成敗,返回NULL.
  例:
   以下是引用片段:
FILE *fp;
  if(fp=fopen("123.456","wb"))
  puts("打開(kāi)文件成功");
  else
  puts("打開(kāi)文件成敗");


2.fclose()


  fclose()的功能就是關(guān)閉用fopen()打開(kāi)的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失敗返回EOF。

  在程序結(jié)束時(shí)一定要記得關(guān)閉打開(kāi)的文件,不然可能會(huì)造成數(shù)據(jù)丟失的情況,我以前就經(jīng)常犯這樣的錯(cuò)誤。

  例:fclose(fp);

3.fputc()


  向流寫(xiě)一個(gè)字符,原型是int fputc(int c, FILE *stream); 成功返回這個(gè)字符,失敗返回EOF。

  例:fputc(’X’,fp);

4.fgetc()
  從流中讀一個(gè)字符,原型是int fputc(FILE *stream); 成功返回這個(gè)字符,失敗返回EOF。

  例:char ch1=fgetc(fp);

5. fseek()


  此函數(shù)一般用于二進(jìn)制模式打開(kāi)的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE *stream, long offset, int whence);如果成功返回0,參數(shù)offset是移動(dòng)的字符數(shù),whence是移動(dòng)的基準(zhǔn),取值是:

  符號(hào)常量 值 基準(zhǔn)位置

  SEEK_SET 0 文件開(kāi)頭

  SEEK_CUR 1 當(dāng)前讀寫(xiě)的位置

  SEEK_END 2 文件尾部

  例:fseek(fp,1234L,SEEK_CUR);//把讀寫(xiě)位置從當(dāng)前位置向后移動(dòng)1234字節(jié)(L后綴表示長(zhǎng)整數(shù))

  fseek(fp,0L,2);//把讀寫(xiě)位置移動(dòng)到文件尾

6.fputs()

  寫(xiě)一個(gè)字符串到流中,原型int fputs(const char *s, FILE *stream);

  例:fputs("I Love You",fp);

7.fgets()


  從流中讀一行或指定個(gè)字符,原型是char *fgets(char *s, int n, FILE *stream); 從流中讀取n-1個(gè)字符,除非讀完一行,參數(shù)s是來(lái)接收字符串,如果成功則返回s的指針,否則返回NULL。

  例:如果一個(gè)文件的當(dāng)前位置的文本如下:
  Love ,I Have

  But ……..

  如果用

  fgets(str1,4,file1);

  則執(zhí)行后str1="Lov",讀取了4-1=3個(gè)字符,而如果用

  fgets(str1,23,file1);

  則執(zhí)行str="Love ,I Have",讀取了一行(不包括行尾的’\n’)。

8.fprintf()


  按格式輸入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不過(guò)不是寫(xiě)到控制臺(tái),而是寫(xiě)到流罷了。

  例:fprintf(fp,"%2d%s",4,"Hahaha");

9.fscanf()


  從流中按格式讀取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不過(guò)不是從控制臺(tái)讀取,而是從流讀取罷了。

  例:fscanf(fp,"%d%d" ,&x,&y);

10.feof()


  檢測(cè)是否已到文件尾,是返回真,否則返回0,其原型是int feof(FILE *stream);

  例:if(feof(fp))printf("已到文件尾");

11.ferror()


  原型是int ferror(FILE *stream);返回流最近的錯(cuò)誤代碼,可用clearerr()來(lái)清除它,clearerr()的原型是void clearerr(FILE *stream);

  例:printf("%d",ferror(fp));

12.rewind()


  把當(dāng)前的讀寫(xiě)位置回到文件開(kāi)始,原型是void rewind(FILE *stream);其實(shí)本函數(shù)相當(dāng)于fseek(fp,0L,SEEK_SET);

  例:rewind(fp);

13.remove()


  刪除文件,原型是int remove(const char *filename); 參數(shù)就是要?jiǎng)h除的文件名,成功返回0。

  例:remove("c:\\io.sys");

14.fread()


  從流中讀指定個(gè)數(shù)的字符,原型是size_t fread(void *ptr, size_t size, size_t n, FILE *stream);參數(shù)ptr是保存讀取的數(shù)據(jù),void*的指針可用任何類型的指針來(lái)替換,如char*、int *等等來(lái)替換;size是每塊的字節(jié)數(shù);n是讀取的塊數(shù),如果成功,返回實(shí)際讀取的塊數(shù)(不是字節(jié)數(shù)),本函數(shù)一般用于二進(jìn)制模式打開(kāi)的文件中。

  例:
   以下是引用片段:
char x[4230];
  FILE *file1=fopen("c:\\msdos.sys","r");
  fread(x,200,12 ,file1);//共讀取200*12=2400個(gè)字節(jié)

15.fwrite()


  與fread對(duì)應(yīng),向流中寫(xiě)指定的數(shù)據(jù),原型是size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);參數(shù)ptr是要寫(xiě)入的數(shù)據(jù)指針,void*的指針可用任何類型的指針來(lái)替換,如char*、int *等等來(lái)替換;size是每塊的字節(jié)數(shù);n是要寫(xiě)的塊數(shù),如果成功,返回實(shí)際寫(xiě)入的塊數(shù)(不是字節(jié)數(shù)),本函數(shù)一般用于二進(jìn)制模式打開(kāi)的文件中。

  例:
   以下是引用片段:
  char x[]="I Love You";
  fwire(x, 6,12,fp);//寫(xiě)入6*12=72字節(jié)
  將把"I Love"寫(xiě)到流fp中12次,共72字節(jié)

16.tmpfile()


  其原型是FILE *tmpfile(void); 生成一個(gè)臨時(shí)文件,以"w+b"的模式打開(kāi),并返回這個(gè)臨時(shí)流的指針,如果失敗返回NULL。在程序結(jié)束時(shí),這個(gè)文件會(huì)被自動(dòng)刪除。

  例:FILE *fp=tmpfile();

17.tmpnam();


  其原型為char *tmpnam(char *s); 生成一個(gè)唯一的文件名,其實(shí)tmpfile()就調(diào)用了此函數(shù),參數(shù)s用來(lái)保存得到的文件名,并返回這個(gè)指針,如果失敗,返回NULL。

  例:tmpnam(str1);
 
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于C的文件操作
詳解C語(yǔ)言中的fopen()函數(shù)和fdopen()函數(shù)
C語(yǔ)言之文件操作
C語(yǔ)言詳解——文件讀取
文件操作
C語(yǔ)言-文件操作-收集
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服