目录
头文件:stdio.h
该函数和printf的参数特别像,只是多了一个参数stream,
适用于所有输出流,将格式化的数据输入到流中
- #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函数一样,只是可以控制数据到哪个流当中去。
- #include
- 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;
- }

这样结构体的数据就打印到了标准输出界面了。
头文件:stdio.h

同样的fscanf和scanf很行只是多了一个stream
适用于所有输入流
将格式化的数据从流中读取出来
- 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;
- }
- #include
- 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;
- }
运行结果:

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