(C语言)fscanf与fprintf函数详解

本文详细介绍了C语言中的fprintf用于向文件或标准输入流写入格式化数据,以及fscanf用于从文件或标准输入流读取格式化数据的方法和实例。
摘要由CSDN通过智能技术生成

目录

1 fprintf详解

1.1 向文件流中输入数据

1.2 向标准输入流写数据

2. fscanf函数详解

2.1 从文件中读取格式化数据

2.2 从标准输入流中读取格式化数据


1 fprintf详解

头文件:stdio.h

该函数和printf的参数特别像,只是多了一个参数stream,

适用于所有输出流,将格式化的数据输入到流中

1.1 向文件流中输入数据

#include <stdio.h>
struct S
{
	char name[10];
	int height;
	float grate;
}s={"xiaoming",80,65.5f};
int main()
{
	//打开文件
	FILE* pf = fopen("date.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//先文件写格式化的内容
	fprintf(pf, "%s %d %f", s.name, s.height, s.grate);
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

可见文件中的确以格式换的方式出现了结构体的数据。该函数和printf函数很像,格式化部分和prinf函数一样,只是可以控制数据到哪个流当中去。

1.2 向标准输入流写数据

#include <stdio.h>
struct S
{
	char name[10];
	int height;
	float grate;
}s={"xiaoming",80,65.5f};
int main()
{
	fprintf(stdout, "%s %d %f", s.name, s.height, s.grate);
	return 0;
}

这样结构体的数据就打印到了标准输出界面了。

2. fscanf函数详解

头文件:stdio.h

同样的fscanf和scanf很行只是多了一个stream

适用于所有输入流

将格式化的数据从流中读取出来

2.1 从文件中读取格式化数据

struct S
{
	char name[10];
	int height;
	float grate;
}s1={"xiaoming",80,65.5f},s2;
int main()
{
	//打开文件
	FILE* pf = fopen("date.txt", "w+");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//向文件写格式化的数据
	fprintf(pf, "%s,%d,%f", s1.name, s1.height, s1.grate);
	//从文件中读取格式化的数据到s2结构体
	fscanf(pf, "%s %d %f", s2.name, &s2.height, &s2.grate);
	//打印s2结构体的内容
	printf("%s %d %f", s2.name, s2.height, s2.grate);
	//关闭文件
	fclose(pf);
	pf = NULL;
	return 0;
}

2.2 从标准输入流中读取格式化数据

#include <stdio.h>
struct S
{
	char name[10];
	int age;
	float score;
}s;
int main()
{
	fscanf(stdin, "%s%*c%d%*c%f", s.name, &(s.age), &(s.score));
	printf("%s %d %f", s.name, s.age, s.score);
	return 0;
}

运行结果:

感谢观看,欢迎在评论区讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值