例題3-文件操作

之前用的不多,見到時有點懵,記錄以備查閱


fopen打開文件

返回FILE*,如果該指針爲NULL,表未打開文件

比較簡單,兩個參數,第一個爲文件,第二個爲模式

其中“r”只讀;“w”寫入;"a"追加寫入

“w+b”b區分二進制文件(windows下);linux不區分

寫入有int類型,也是二進制的範圍。單純char的才用w+.

w是以文本方式打開文件,wb是二進制方式打開文件,以文本方式打開文件時,fwrite函數每碰到一個0x0A時,

就在它的前面加入0x0D.其它內容不做添加操作

fseek

頭文件stdio.h

重定位流上的文件指針
原型: 

int fseek(FILE *stream, long offset, int fromwhere);


參數介紹: stream爲文件指針。從fromwhere開始,偏移offset個字節的位置。如果執行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。
返回值: 成功,返回0,否則返回其他值。


fread與fwrite 寫入與讀取

調用:

size_t fread( void * buffer,size_t size,size_t n, FILE * fp);

fp文件指針,讀n個字段,每個size字節,放入buffer中;

返回實際讀取的字節數

size_t fwrite( void * buffer,size_t size,size_t n, FILE * fp);

參數同上


rewind

原型:void rewind(FILE *fp)

作用:使文件fp的位置指針指向文件開始。

ftell(fp)

獲得當前的位置指針


fclose關閉文件


此外,還有

int fgetc(fp);

int fputc(int c, fp);

fputc 會將參數c 轉爲unsigned char 後寫入參數stream 指定的文件中.

讀取寫入字符


例題:

#include 
main()
{ 
    FILE *fp;
    int i,a[ 6]={1,2,3,4,5,6},k;
    fp = fopen ("data.dat", "w+b");
    for (i=0;i<6;i+ +)
    { 
        fseek(fp,0L,0);
        fwrite(&a[5—i],sizeof(int),1,fp);
    }//反覆在第一行覆蓋寫入,最終寫入1
    rewind(fp);//文件指針重置指向開頭
    fread(&k,sizeof(int),1,fp);//讀取第一行k爲1
    fclose(fp);
    printf("%d",k);
}

同時應注意讀取寫入時內容的大小,類型


文件指針

是文件操作系統數據結構內部的一種數據指針,它用於標註文件當前讀寫位置,C語言中,文件指針以字節爲單位
C語言的文件指針採用long型值

執行文件讀/寫操作後,文件指針自動向後移動,指到新的待讀/寫位置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章