一、文件的格式化操作
1、fprintf 文件的写操作
void test03()
{
HERO hero[]={
{"德玛西亚",80, 60},
{"盲僧",90, 80},
{"小法",40, 85},
{"小炮",50, 90}
};
int n = sizeof(hero)/sizeof(hero[0]);
FILE *fp = NULL;
int i=0;
fp = fopen("hero.txt", "w");
if(fp == NULL)
{
perror("fopen");
return;
}
for(i=0;i<n;i++)
{
fprintf(fp,"英雄:%s 防御:%d 攻击:%d\n",hero[i].name, hero[i].deff,hero[i].atk);
}
fclose(fp);
}
运行结果:
2、fscanf格式化 读操作
void test04()
{
HERO hero[4];
int i=0;
FILE *fp = NULL;
fp = fopen("hero.txt","r");
if(fp == NULL)
{
perror("fopen");
return;
}
for(i=0;i<4; i++)
{
fscanf(fp,"英雄:%s 防御:%d 攻击:%d\n", hero[i].name, &hero[i].deff, &hero[i].atk);
}
for(i=0;i<4; i++)
{
printf("%s %d %d\n", hero[i].name, hero[i].deff, hero[i].atk);
}
fclose(fp);
}
运行结果:
总结
二、文件的随机读写
1、复位文件流指针 rewind
void test05()
{
char buf[128]="";
FILE *fp = NULL;
fp = fopen("a.txt","w+");
if(fp == NULL)
{
perror("fopen");
return;
}
//先往文件中写入 一个字符串"hello file"
fputs("hello file", fp);
//复位文件流指针(位置 指针)
rewind(fp);//注意
//在从文件找那个读取 该字符串
fgets(buf,sizeof(buf), fp);
printf("buf=%s\n", buf);
fclose(fp);
}
运行结果:
2、获得 文件流指针 距离 文件首部 的字节数 ftell
3、定位 文件的流指针 fseek
4、feof()函数 判断文件是否到达文件末尾
EOF宏 只能用于 文本文 文件
feof函数 可以用于 文本文文件 二进制文件