fscanf,sscanf,fprintf,sprintf函数的使用和区别

目录

fscanf和fpritnf的使用

fprintf函数

fprintf函数的作用和使用

fscanf函数

fscanf函数的作用和使用

sprintf函数

sprintf函数的作用和使用

sscanf函数

sscanf函数的作用和使用


所有函数的头文件都是<stdio.h>

fscanf和fpritnf的使用

fprintf函数

fprintf函数的作用和使用

将数据以格式化形式写入一个流中,printf默认输出流为stdout

和printf相比,fprintf 多了一个参数FILE*stream,这使得fprintf可以在指定流中运用

代码演示

#include<stdio.h>

struct s1	//创建一个结构体
{
	int a;
	double b;
	char c;
};

int main()
{
	struct s1 s = { 10,4.0,'1' };	//创建一个结构体变量
	FILE* fp = fopen("test.txt", "w");	//以w(可读)形式打开一个文件
	if (fp == NULL)	//判断是否打开成功
	{
		perror("fopen");
		return 1;
	}
	fprintf(fp, "%d %lf %c", s.a, s.b, s.c);	//将结构体变量中的数据输出到fp流中
	return 0;
}

 我们打开这个文件,发现里面存储了fprintf输入的数据

fscanf函数

fscanf函数的作用和使用

从流中以格式化形式读取,scanf的默认输入流为stdin

和scanf相比,fscanf 多了一个参数FILE*stream,这使得fscanf可以在指定流中运用

代码演示

这个要读取的文件中存了这些数据 

#include<stdio.h>

struct s1	//创建一个结构体
{
	int a;
	double b;
	char c;
};

int main()
{
	struct s1 s = { 0 };	//创建一个结构体变量
	FILE* fp = fopen("test.txt", "r");	//以r(可读)形式打开一个文件
	if (fp == NULL)	//判断是否打开成功
	{
		perror("fopen");
		return 1;
	}
	fscanf(fp, "%d %lf %c", &s.a, &s.b, &s.c);	//将fp流中的数据读取到s结构体中
	printf("%d %lf %c", s.a, s.b, s.c);
	return 0;
}

将读取到的数据存储到s中,并且打印出来,发现成功打印了fp流中的数据

sprintf函数

sprintf函数的作用和使用

 

将一个数据,以格式化的形式转换成字符串

代码演示

#include<stdio.h>

struct s1	//创建一个结构体
{
	int a;
	double b;
	char c;
};

int main()
{
	struct s1 s = { 1,2.0,'3' };	//创建一个结构体变量
	char arr[30] = { 0 };	//创建一个字符数组
	sprintf(arr, "%d %lf %c", s.a, s.b, s.c);	//将s中的数据转换成字符串
	printf("%s", arr);	//打印这个字符串
	return 0;
}

打印的这个为转换后的字符串

 

sscanf函数

sscanf函数的作用和使用

将字符串转换成格式化的数据

代码演示

#include<stdio.h>

struct s	//创建一个结构体
{
	int a;
	double b;
	char c;
};

int main()
{
	struct s s1 = { 1,2.0,'3' };	//创建一个结构体变量
	struct s s2 = { 0 };
	char arr[30] = { 0 };	//创建一个字符数组
	sprintf(arr, "%d %lf %c", s1.a, s1.b, s1.c);	//将s中的数据转换成字符串
	printf("%s\n", arr);	//打印这个字符串
	sscanf(arr, "%d %lf %c", &s2.a, &s2.b, &s2.c);	//将字符串中的数据转换成格式化的数据
	printf("%d %lf %c", s2.a, s2.b, s2.c);	//打印这个被各耍的数据
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起慢慢变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值