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