FILE *fp//定义一个文件类型指针
1.fopen函数
fopen函数是在当前目录下打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式);
eg:fp=fopen("a1","rb+");
“文件指针名”必须是被说明为FILE 类型的指针变量;
“文件名”是被打开文件的文件名;
“使用文件方式”是指文件的类型和操作要求;
使用文件的方式:
2.fclose函数
关闭文件函数,这个函数用法很简单,用完fwrite()和fread()函数用就行
fclose(fp);
返回值:如果流成功关闭,fclose 返回 0,否则返回EOF(-1);
3.fwrite函数
功能是向指定的文件中写入若干数据块
fwrite(buffer,size,count,fp);
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;(可以见实例,下方代码)(一般用sizeof())
(3)count:要进行写入size字节的数据项的个数;
(4)fp:目标文件指针;
4.fread函数
fread(buffer,size,count,fp);
(1)buffer:是一个
指针,对fread来说,它是用来存放从文件读入的数据的存储区的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的
数据项的个数;
(4)fp:目标
文件指针;
5.fseek函数
改变文件位置标记
fseek(fp,位移量,起始点)
第一个参数为文件
指针
第二个参数为
偏移量,正数表示正向偏移,负数表示负向偏移
第三个参数设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
简言之:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把fp指针退回到离文件结尾100字节处。
下面附上一段实例代码:
#include<stdio.h>
struct node{
int x;
char a[10];
};
int main()
{
node t[3]={{2,"abc"},{3,"ksdf"},{4,"skajhf"}},tt[3],ttt={10,"zzzz"};
FILE *fp;
fp=fopen("wenbo.txt","wb");//建立一个文件
fwrite(t,sizeof(node),3,fp);//向文件中写入内容
fclose(fp);
fp=fopen("wenbo.txt","rb");
fread(tt,sizeof(node),3,fp);//读取文件内容
fclose(fp);
for(int i=0;i<3;i++)
{
printf("%d %s\n",tt[i].x,tt[i].a);//输出
}
fp=fopen("wenbo.txt","rb+");
printf("%d\n",sizeof(node));
fseek(fp,-(long)sizeof(node),SEEK_END);//更换指针位置
fwrite(&ttt,sizeof(node),1,fp);//更换指针所指位置数据
fclose(fp);//要关闭
fp=fopen("wenbo.txt","rb");
fread(tt,sizeof(node),3,fp);
fclose(fp);
for(int i=0;i<3;i++)
{
printf("%d %s\n",tt[i].x,tt[i].a);
}
}