fscanf 函数和fprintf函数与scanf和printf函数的功能相似,都是格式化读写函数。两者的区别在于fscanf函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。
这两个函数的调用格式为:
fscanf(fp,"%d %s",&num,str);
fprintf(fp,“%d %c”,num,ch);//fp为文件指针
例:
从键盘输入五个学生数据,写入一个文件中,再读出五个学生的数据显示在屏幕上。
#include <stdio.h>
struct stud
{
char name[10];
int num;
}sw[5],sr[5],*pw,*pr; //定义一个存储学生信息的结构体
int main()
{
FILE *fp;
int i;
if((fp = fopen("d:\\abc.txt","wb+")) == NULL) //以读写的方式打开文件
{
printf("Cannot open a file !");
}
pw = sw; //指针pw指向数组sw
pr = sr; //指针pr指向数组sr
printf("input data\n");
printf("name num\n");
for(i = 0;i < 5;i++)
scanf("%s %d",sw[i].name,&sw[i].num);
for(i = 0;i < 5;i++,pw++) //将数据读入到文件中,注意pw的指向变化
fprintf(fp,"%s %d\n",pw->name,pw->num);
rewind(fp); //将文件内部指针移到文件首部
for(i = 0;i < 5;i++,pr++)
fscanf(fp,"%s %d\n",pr->name,&pr->num); //将信息从文件中读到结构体中
printf("\nname num\n");
for(i = 0;i < 5;i++)
printf("%s %5d\n",sr[i].name,sr[i].num); //将信息从结构体中读取出来
fclose(fp); //关闭文件
return 0;
}