例题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型值

执行文件读/写操作后,文件指针自动向后移动,指到新的待读/写位置

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