(轉載)C++檔案讀寫函數之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind

來源:互聯網
上載者:User

標籤:

http://blog.sina.com.cn/s/blog_61437b3b0102v0bt.html

http://blog.csdn.net/chenwk891/article/details/8776479在C\C++中,檔案操作都是由庫函數來實現的,主要是分為讀和寫兩種操作,以下詳細講解以下所有有關檔案操作的用法: (1)fopen()函數:開啟檔案包含標頭檔:#include格式:FILE * fopen(const char * path,const char * mode);參數:path:需要開啟的檔案路徑mode:檔案開啟檔案,具體如下r 以唯讀方式開啟檔案,該檔案必須存在。r+ 以可讀寫方式開啟檔案,該檔案必須存在。rb+ 讀寫開啟一個二進位檔案,允許讀資料。rt+ 讀寫開啟一個文字檔,允許讀和寫。w 開啟唯寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。a 以附加的方式開啟唯寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(EOF符保留)a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。(原來的EOF符不保留)wb 唯寫開啟或建立一個二進位檔案;只允許寫資料。wb+ 讀寫開啟或建立一個二進位檔案,允許讀和寫。wt+ 讀寫開啟或著建立一個文字檔;允許讀寫。at+ 讀寫開啟一個文字檔,允許讀或在文本末追加資料。ab+ 讀寫開啟一個二進位檔案,允許讀或在檔案末追加資料。 現在對上面的檔案開啟檔案做個總結:檔案使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:    r(read): 讀    w(write): 寫    a(append): 追加    t(text):文字檔,可省略不寫    b(banary): 二進位檔案    +: 讀和寫 傳回值:    如果檔案順利開啟,返回指向該流的檔案指標。如果檔案開啟失敗則返回NULL,並把錯誤碼存在errno中。說明    一般而言,開啟檔案後會作一些檔案讀取或寫入的動作,若開啟檔案失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()後作錯誤判斷及處理。  (2)fread()函數和fwrite()函數:(可以用來實現對資料區塊的操作)1.一般調用形式   fread(buffer,size,count,fp);   fwrite(buffer,size,count,fp); 2.說明   (1)buffer:是一個指標,對fread來說,它是讀入資料的存放地址。對fwrite來說,是要輸出資料的地址。   (2)size:要讀寫的位元組數;   (3)count:要進行讀寫多少個size位元組的資料項目;   (4)fp:檔案型指標。 C語言還提供了用於整塊資料的讀寫函數。可用來讀寫一組資料,如一個數組元素,一個結構變數的值等。讀資料區塊函數調用的一般形式為: fread(buffer,size,count,fp); 寫資料區塊函數調用的一般形式為: fwrite(buffer,size,count,fp); 其中buffer是一個指標,在fread函數中,它表示存放輸入資料的首地址。在fwrite函數中,它表示存放輸出資料的首地址。 size 表示資料區塊的位元組數。count 表示要讀寫的資料區塊塊數。fp 表示檔案指標。例如:fread(fa,4,5,fp); 其意義是從fp所指的檔案中,每次讀4個位元組(一個實數)送入實數組fa中,連續讀5次,即讀5個實數到fa中。  (3)fgetc()和fputc():字元讀寫函數fgetc函數(getc函數) (1)一般調用形式        ch=fgetc(fp);(2)作用        從指定的檔案讀入一個字元,即從fp所指向的檔案中讀入一個字元賦給ch。(3)傳回值        成功:傳回值所得到的字元;        失敗:返回EOF(-1)。 fputc函數():(1)一般調用形式 fputc(ch,fp);(2)作用把一個字元寫到磁碟檔案上去,即將字元ch輸出到fp所指向的檔案中去。(3)傳回值成功:傳回值就是輸出的字元;失敗:返回EOF(-1)。說明:函數putchar()是在stdio.h中用預先處理命令定義的宏,即:#define putchar(c)     fputc(c,stdout)  4、fgets()和fputs()函數:讀寫字串函數(1)fgets():char *fgets(char *str, int num, FILE *fp)  參數說明:str: 儲存從檔案讀取出來的字串                 fp: 待讀檔案的檔案指標          num: 表示從檔案中讀出的字串不超過 n-1個字元。在讀入的最後一個字元後加上串結束標誌‘\0‘ (2)fputs(char * s,FILE * stream);  5、fscanf()和fprintf()函數:格式化讀寫函數(1)fprintf()函數:輸出格式化字串到流或者是將格式化後的字串寫到輸出資料流(檔案) 原型:int fprintf( FILE *stream, const char *format [, argument ]…);  例子:fprintf(fp, "%s %s %d %f", str1,str2, a, b) ; (2)fscanf()函數:輸出檔案中的內容到某個變數中。 int fscanf(FILE *stream, char *format,[argument...]);   int fscanf(檔案指標,格式字串,輸入列表);  for example:  FILE *fp;  char a[];  int b;  double c;  fscanf(fp,"%s%d%lf",a,&b,&c)  傳回值:整型,數值等於[argument...]的個數 6、ftell()函數:得到流式檔案的當前讀寫位置,其傳回值是當前讀寫位置偏離檔案頭部的位元組數。 原型:long ftell(FILE *fp)  7、 fseek()函數:把fp的檔案讀寫位置指標移到指定的位置。 int fseek(FILE *fp,long offset,int origin);origin指的是“起始點”,它有三個常量的值,如下:起始點對應的數字   代表的檔案位置SEEK_SET 0   檔案開頭SEEK_CUR 1   檔案當前位置SEEK_END 2   檔案末尾  8、 rewind()函數:將檔案指標重新指向一個流的開頭原型:int rewind(FILE *stream); 例子:一般我們會通過下面的方法來擷取檔案中字元的個數:    FILE *fs=fopen("C:\1.txt","r");//建立檔案流    long length=0;//聲明檔案長度    fseek(fs,0,SEEK_END);//將檔案內部指標放到檔案最後面    length=ftell(fs);//讀取檔案指標的位置,得到檔案字元的個數    rewind(fs);//將檔案指標重設到檔案最前面

(轉載)C++檔案讀寫函數之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.