文件操作 2

一、文件的格式化操作

在这里插入图片描述

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函数 可以用于 文本文文件 二进制文件

发布了15 篇原创文章 · 获赞 11 · 访问量 2892

猜你喜欢

转载自blog.csdn.net/Evan_work/article/details/104664157