当前位置:   article > 正文

【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf

【C语言】:浅谈函数 fscanf/sscanf 和 fprintf/sprintf

一,fprintf 的介绍和使用

1. 函数介绍

1.1 功能:把数据以格式化的形式写入指定的输出流上

1.2 参数:该函数的参数与 printf 函数的参数类似,只是多了一个文件流
在这里插入图片描述

2. 函数使用

此时把数据以格式化的形式写入指定的输出流上


#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h>

struct S
{
	char name[20];
	int age;
	float score;

};

int main()
{
	struct S s = { "张三",20,65.5f };
	
	//想把s中的数据存写在文件test.txt中
	FILE* pf = fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	//写文件 -- 是以文本的形式写进去的
	fprintf(pf, "%s %d %f", s.name, s.age, s.score);

	fclose(pf);
	pf = NULL;

	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

结果如下:

在这里插入图片描述

二,fscanf 的介绍和使用

1. 函数介绍

1.1 功能:从指定的输入流上读取格式化数据

1.2 参数:该函数的参数与 scanf 函数的参数类似,只是多了一个文件流
在这里插入图片描述

2. 函数使用

此时是从文件 test.txt 中读取数据


struct S
{
	char name[20];
	int age;
	float score;

};

int main()
{
	struct S s = { 0 };
	//想从test.txt文件中把数据放入s
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	//读文件
	fscanf(pf, "%s %d %f", s.name, &(s.age), &(s.score));

	//想打印在屏幕上看看
	printf("%s %d %f", s.name, s.age, s.score);

	fclose(pf);
	pf = NULL;

	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

结果如下:

在这里插入图片描述

三,sprintf 的介绍和使用

1. 函数介绍

1.1 功能:把格式化的数据写入到字符串中。其实就是把格式化的数据转化成字符串了。

1.2 参数:该函数的参数与 printf 函数的参数类似,只是多了一个字符串指针
在这里插入图片描述

2. 函数使用

此时把结构体中格式化的数据转化成字符串,再直接以字符串的形式打印。


struct S
{
	char name[20];
	int age;
	float score;

};

int main()
{
	char buf[200] = { 0 };
	struct S s = { "张三",20,65.5f };

	//把结构体中格式化的数据转化成字符串
	sprintf(buf, "%s %d %f", s.name, s.age, s.score);

	//直接以字符串的形式打印
	printf("%s\n", buf);

	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

输出结果如下:

在这里插入图片描述

四,sscanf 的介绍和使用

1,函数介绍

1.1 功能:在字符串中读取格式化的数据。

1.2 参数:该函数的参数与 scanf 函数的参数类似,只是多了一个字符串指针

在这里插入图片描述

2,函数使用

再把 buf 字符串中的数据读入结构体 t 中。再打印结构体t中的数据


struct S
{
	char name[20];
	int age;
	float score;

};

int main()
{
	char buf[200] = { 0 };
	struct S s = { "张三",20,65.5f };

	//把结构体中格式化的数据转化成字符串
	sprintf(buf, "%s %d %f", s.name, s.age, s.score);

	//直接以字符串的形式打印
	printf("%s\n", buf);

	struct S t = { 0 };

	//把buf中的字符串转化成结构体t中格式化的数据
	sscanf(buf, "%s %d %f", t.name, &(t.age), &(t.score));

	//打印结构体t中的数据
	printf("%s %d %f\n", t.name, t.age, t.score);



	return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

输出结果如下:

在这里插入图片描述

五,总结

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/70c5dd2b9d2d41e5a1cb8cde1bc86bad.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/531101
推荐阅读
相关标签
  

闽ICP备14008679号