例题3-文件操作

来源:互联网 发布:seo视频教程 编辑:程序博客网 时间:2024/06/11 21:27

之前用的不多,见到时有点懵,记录以备查阅


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

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