目录
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;
}
运行结果:
感谢观看,欢迎在评论区讨论。