1.fopen()
fopen的原型是:file *fopen(const char *filename,const char *mode),fopen實現三個功能
為使用而開啟乙個流
把乙個檔案和此流相連線
給此流返回乙個file指標
引數filename指向要開啟的檔名,mode表示開啟狀態的字串,其取值如下表
字串 含義
"r" 以唯讀方式開啟檔案
"w" 以只寫方式開啟檔案
"a" 以追加方式開啟檔案
"r+" 以讀/寫方式開啟檔案,如無檔案出錯
"w+" 以讀/寫方式開啟檔案,如無檔案生成新檔案
乙個檔案可以以文字模式或二進位制模式開啟,這兩種的區別是:在文字模式中回車被當成乙個字元''/n'',而二進位制模式認為它是兩個字元0x0d,0x0a;如果在檔案中讀到0x1b,文字模式會認為這是檔案結束符,也就是二進位制模型不會對檔案進行處理,而文字方式會按一定的方式對資料作相應的轉換。
系統預設的是以文字模式開啟,可以修改全部變數_fmode的值來修改這個設定,例如_fmode=o_text;就設定預設開啟方式為文字模式;而_fmode=o_binary;則設定預設開啟方式是二進位制模式。
我們也可以在模式字串中指定開啟的模式,如"rb"表示以二進位制模式開啟唯讀檔案,"w+t"或"wt+"表示以文字模式開啟讀/寫檔案。
此函式返回乙個file指標,所以申明乙個file指標後不用初始化,而是用fopen()來返回乙個指標並與乙個特定的檔案相連,如果成敗,返回null。
例:file *fp;
if(fp=fopen("123.456","wb"))
puts("開啟檔案成功");
else
puts("開啟檔案成敗");
2.fclose()
fclose()的功能就是關閉用fopen()開啟的檔案,其原型是:int fclose(file *fp);如果成功,返回0,失敗返回eof。
在程式結束時一定要記得關閉開啟的檔案,不然可能會造成資料丟失的情況,我以前就經常犯這樣的毛病。
3.fputc()
向流寫乙個字元,原型是int fputc(int c, file *stream); 成功返回這個字元,失敗返回eof。
4.fgetc()
從流中讀乙個字元,原型是int fputc(file *stream); 成功返回這個字元,失敗返回eof。
5. fseek()
此函式一般用於二進位制模式開啟的檔案中,功能是定位到流中指定的位置,原型是int fseek(file *stream, long offset, int whence);如果成功返回0,引數offset是移動的字元數,whence是移動的基準,取值是
符號常量 值 基準位置
seek_set 0 檔案開頭
seek_cur 1 當前讀寫的位置
seek_end 2 檔案尾部
例:fseek(fp,1234l,seek_cur);//把讀寫位置從當前位置向後移動1234位元組(l字尾表示長整數)
fseek(fp,0l,2);//把讀寫位置移動到檔案尾
6.fputs()
寫乙個字串到流中,原型int fputs(const char *s, file *stream);
例:fputs("i love you",fp);
7.fgets()
從流中讀一行或指定個字元,原型是char *fgets(char *s, int n, file *stream); 從流中讀取n-1個字元,除非讀完一行,引數s是來接收字串,如果成功則返回s的指標,否則返回null。
8.fprintf()
按格式輸入到流,其原型是int fprintf(file *stream, const char *format[, argument, …]);其用法和printf()相同,不過不是寫到控制台,而是寫到流罷了
例:fprintf(fp,"%2d%s",4,"hahaha");
9.fscanf()
從流中按格式讀取,其原型是int fscanf(file *stream, const char *format[, address, …]);其用法和scanf()相同,不過不是從控制台讀取,而是從流讀取罷了。
例:fscanf(fp,"%d%d" ,&x,&y);
10.feof()
檢測是否已到檔案尾,是返回真,否則返回0,其原型是int feof(file *stream);
例:if(feof(fp))printf("已到檔案尾");
11.ferror()
原型是int ferror(file *stream);返回流最近的錯誤**,可用clearerr()來清除它,clearerr()的原型是void clearerr(file *stream);
例:printf("%d",ferror(fp));
12.rewind()
把當前的讀寫位置回到檔案開始,原型是void rewind(file *stream);其實本函式相當於fseek(fp,0l,seek_set);
例:rewind(fp);
12.remove()
刪除檔案,原型是int remove(const char *filename); 引數就是要刪除的檔名,成功返回0。
例:remove("c://io.sys");
13.fread()
從流中讀指定個數的字元,原型是size_t fread(void *ptr, size_t size, size_t n, file *stream);引數ptr是儲存讀取的資料,void*的指標可用任何型別的指標來替換,如char*、int *等等來替換;size是每塊的位元組數;n是讀取的塊數,如果成功,返回實際讀取的塊數(不是位元組數),本函式一般用於二進位制模式開啟的檔案中。
例:char x[4230];
file *file1=fopen("c://msdos.sys","r");
fread(x,200,12 ,file1);//共讀取200*12=2400個位元組
14.fwrite()
與fread對應,向流中寫指定的資料,原型是size_t fwrite(const void *ptr, size_t size, size_t n, file *stream);引數ptr是要寫入的資料指標,void*的指標可用任何型別的指標來替換,如char*、int *等等來替換;size是每塊的位元組數;n是要寫的塊數,如果成功,返回實際寫入的塊數(不是位元組數),本函式一般用於二進位制模式開啟的檔案中。
例:char x="i love you";
fwire(x, 6,12,fp);//寫入6*12=72位元組
將把"i love"寫到流fp中12次,共72位元組
C C 中的檔案操作 2
c 檔案操作。c 中引入了stream,相關的標頭檔案,支援檔案輸入與輸出,還有兩個和,分別支援檔案讀入和寫入。內容的讀取與寫入 c 引入了流操作,流操作符 和 用來從檔案讀取內容或把內容寫入檔案。istream operator type val 與fscanf對應,格式化的讀取內容,格式由值的t...
C C 的檔案讀寫操作
檔案讀寫是經常用到的,在c c 中關於檔案讀寫的函式也很毒,最近在使用檔案讀寫的時候就發現一些問題,總結一下 1.fgetc 函式原型是 int fgetc file stream 該函式每一次從檔案中讀取乙個字元,對於空格和回車都可以讀取!source.txt 檔案內容為 thank you ve...
C C 檔案操作 2
ofstream fs binary ios binary ofstream fs character.txt int i 32765 fs 無論以二進位制檔案模式開啟還是以文字模式開啟,檔案中都是儲存著文字!似乎c c 中的binary 模式不起作用!後來查閱資料才知道 要想在c c 中將資料以二...