2007
11-16

在看我们网站公布的电话簿程序有几点搞不懂的地方,希望大家能够指点指点我:


fscanf(fp,”%d”,&n); /*读入记录数*/
   for(i=0;i<n;i++)
      fscanf(fp,”%20s%30s%10s%10s”,t[i].name,t[i].units,t[i].tele,t[i].relation); /*按格式读入记录*/
   fclose(fp);  /*关闭文件*/
   printf(“You have success read data from file!!!\n”); /*显示保存成功*/


为什么要写这句:


fscanf(fp,”%d”,&n);


2/*按序号显示记录函数*/
/*void display(ADDRESS t[])
{
   int id,n;
   FILE *fp; /*指向文件的指针*/
   //if((fp=fopen(“record.txt”,”rb”))==NULL) /*打开文件*/
   //{
     // printf(“can not open file\n”); /*不能打开文件*/
      //exit(1);  /*退出*/
   //}
   //printf(“Enter order number…\n”); /*显示信息*/
   //scanf(“%d”,&id);  /*输入序号*/
   //fscanf(fp,”%d”,&n); /*从文件读入记录数?*/
   //if(id>=0&&id<n) /*判断序号是否在记录范围内*/
   //{
     // fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/
      //print(t[id]); /*调用输出函数显示该记录*/
      //printf(“\r\n”);
   //}
   //else
     // printf(“no %d number record!!!\n “,id); /*如果序号不合理显示信息*/
   //fclose(fp);  /*关闭文件*/
//}


为什么要用fseek函数,我觉得不用也可以,直接输出t[id]就好了啊.


电话簿问题2》有 1 条评论

  1. xstar 说:

    1)
    文件格式,第一行表示有几条记录!
    [code]
    3
    name units tele relation
    name units tele relation
    name units tele relation
    [/code]

    2)
    这段代码有问题!!!
    流程应该是这样的:
    读入记录条数和数据备用,
    显示指定的条数!
    [code]
    fscanf(fp,"%d",&n); /*读入记录数*/
       for(i=0;i<n;i++)
          fscanf(fp,"%20s%30s%10s%10s",t[i].name,t[i].units,t[i].tele,t[i].relation); /*按格式读入记录*/
       fclose(fp);  /*关闭文件*/

    scanf("%d",&id);  /*输入序号*/
    if(id>=0&&id<n) /*判断序号是否在记录范围内*/
    {
        print(t[id]); /*调用输出函数显示该记录*/
        printf("\r\n");
    }

    [/code]

留下一个回复