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

24k纯甄 2024-07-23 10:35:01 阅读 62

目录

一,fprintf 的介绍和使用1. 函数介绍2. 函数使用

二,fscanf 的介绍和使用1. 函数介绍2. 函数使用

三,sprintf 的介绍和使用1. 函数介绍2. 函数使用

四,sscanf 的介绍和使用1,函数介绍2,函数使用

五,总结

一,fprintf 的介绍和使用

1. 函数介绍

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

1.2 参数:该函数的参数与 printf 函数的参数类似,只是多了一个文件流

在这里插入图片描述

2. 函数使用

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

<code>

#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;

}

结果如下:

在这里插入图片描述

二,fscanf 的介绍和使用

1. 函数介绍

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

1.2 参数:该函数的参数与 scanf 函数的参数类似,只是多了一个文件流

在这里插入图片描述

2. 函数使用

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

<code>

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;

}

结果如下:

在这里插入图片描述

三,sprintf 的介绍和使用

1. 函数介绍

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

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

在这里插入图片描述

2. 函数使用

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

<code>

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;

}

输出结果如下:

在这里插入图片描述

四,sscanf 的介绍和使用

1,函数介绍

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

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

在这里插入图片描述

2,函数使用

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

<code>

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;

}

输出结果如下:

在这里插入图片描述

五,总结

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。