pp 和 qq。pp 指向 boya,qq 指向 boyb。程序第 16 行以读写方式打开二进制文件“stu_list”,
输入二个学生数据之后,写入该文件中,然后把文件内部位置指针移到文件首,读出两块学
生数据后,在屏幕上显示。
13.4.4 格式化读写函数 fscanf 和 fprintf
fscanf 函数,fprintf 函数与前面使用的 scanf 和 printf 函数的功能相似,都是格式
化读写函数。两者的区别在于 fscanf 函数和 fprintf 函数的读写对象不是键盘和显示器,而
是磁盘文件。
这两个函数的调用格式为:
fscanf(文件指针,格式字符串,输入表列);
fprintf(文件指针,格式字符串,输出表列);
例如:
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
用 fscanf 和 fprintf 函数也可以完成例 10.6 的问题。修改后的程序如例 10.7 所示。
【例 13.7】用 fscanf 和 fprintf 函数成例 10.6 的问题。
#include
struct stu
{
char ncom[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->ncom,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",pp->ncom,pp->num,pp->age,pp->
addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d %s\n",qq->ncom,&qq->num,&qq->age,qq->addr);
printf("\n\nncom\tnumber age addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("