之前用的不多,见到时有点懵,记录以备查阅
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型值;
执行文件读/写操作后,文件指针自动向后移动,指到新的待读/写位置。