文件的格式化操作
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 攻击:%dn",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 攻击:%dn", hero[i].name, &hero[i].deff, &hero[i].atk);
}
for(i=0;i<4; i++)
{
printf("%s %d %dn", hero[i].name, hero[i].deff, hero[i].atk);
}
fclose(fp);
}
总结:
![88f4fa0eb70d32260a1a3e9caa6411df.png](https://i-blog.csdnimg.cn/blog_migrate/2c1646d436df75a6fb7a4c792acc0a14.jpeg)
文件的随机读写
1、知识点引入
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);
//fclose(fp);
//重新打开文件 让文件的流指针 回到 文件首部
//fp = fopen("a.txt","r");
//在从文件找那个读取 该字符串
fgets(buf,sizeof(buf), fp);
printf("buf=%sn", buf);
fclose(fp);
}
解决上述文件 : 文件写完后 需要关闭