c語言中的文件函數

    在c中,文件操做都是由庫函數來實現的,主要是分爲讀和寫兩種操做,如下詳細講解如下全部有關文件操做用法: 數組

(1)fopen()函數:打開文 app

包含頭文件:#include<stdio.h> 函數

格式:FILE * fopen(const char * path,const char * mode); 指針

參數: orm

  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); get

  fwrite(buffer,size,count,fp); 原型

2.說明 it

  (1)buffer:是一個指針,對fread來講,它是讀入數據的存放地址。對fwrite來講,是要輸出數據的地址。 io

  (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)

四、fgets()和fputs()函數:讀寫字符串函數

   (1)fgets():char *fgets(char *str, int num, FILE *fp)

         參數說明:str: 保存從文件讀取出來的字符串      

                        fp: 待讀文件的文件指針

                       num: 表示從文件中讀出的字符串不超過 n-1個字符。在讀入的最後一個字符後加上串結束標誌'\0'

 

   (2)fputs(char * s,FILE * stream);
五、fscanf()和fprintf()函數:格式化讀寫函數

    (1)fprintf()函數:輸出格式化字符串到流或者是將格式化後的字符串寫到輸出流(文件)

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

                      例子:fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;

    (2)fscanf()函數:輸出文件中的內容到某個變量中。

六、ftell()函數:獲得流式文件的當前讀寫位置,其返回值是當前讀寫位置偏離文件頭部的字節數。

          原型:long ftell(FILE *fp)

七、 fseek()函數:把fp的文件讀寫位置指針移到指定的位置。

     int fseek(FILE *fp,long offset,int origin);      origin指的是「起始點」,它有三個常量的值,以下:      起始點對應的數字   表明的文件位置      SEEK_SET 0   文件開頭      SEEK_CUR 1   文件當前位置      SEEK_END 2   文件末尾 八、 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);//將文件指針重置到文件最前面

相關文章
相關標籤/搜索