字体
第(4/6)页
关灯
   存书签 书架管理 返回目录
boya 和 boyb 以及两个结构指针变量

    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("
上一页 目录 下一页