| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 327 人关注过本帖
标题:求C高手,帮忙解答一下!!万分感谢~
只看楼主 加入收藏
_下一站521
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-12-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
求C高手,帮忙解答一下!!万分感谢~
for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++)
是什么意思啊?
搜索更多相关主题的帖子: employee 
2012-09-03 21:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
从文件里面读struct employee这个结构的数据 我感觉写的不对 判断读取完成应该是判断==1么 这个函数的返回值不是实际读取的大小么 难道这个结构体的大小是1?
2012-09-03 21:07
_下一站521
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-12-21
收藏
得分:0 
回复 2楼 zklhp
这是一个添加函数中的一句,运行结果正确,应该没有错……
原程序如下:
void add()                        
              {
                       FILE *fp;          int i=0;
                         if ((fp = fopen("number.dat", "rb+")) == NULL)
                         {
                                    printf("Can't open file\n");
                                    exit(0);
                         }
                           fread(&number,sizeof(int),1,fp);//从文件指针位置读取
                           fclose(fp);
                         if ((fp = fopen("employee.dat", "rb+")) == NULL)
                         {
                                    printf("Can't open file\n");
                                    exit(0);
                         }
                            fread(emp,sizeof(struct employee),number,fp);
                           fclose(fp);
                         if ((fp = fopen("employee.dat", "wb+")) == NULL)
                         {
                                     printf("Can't open file\n");
                                     exit(0);
                         }
                          printf("      编号   姓名   性别   出生日期          职称          工作年限\n");
                          scanf("       %s    %s    %s    %s          %s          %d",emp[number].num,emp[number].name,emp[number].sex,emp[number].shengri,emp[number].degree,&emp[number].nianxian);
                                  number++;
                                  sort();
                          fwrite(emp,sizeof(struct employee),number, fp);
                                    fclose(fp);

                           if ((fp = fopen("number.dat", "wb+")) == NULL)
                           {
                               printf("Can't open file\n");
                               exit(0);
                           }
                                fwrite(&number,sizeof(int),1,fp);
                                fclose(fp);


                             if ((fp = fopen("employee.dat", "rb+")) == NULL)
                             {
                                   printf("Can't open file\n");
                                    exit(0);
                             }
                                 printf(" 添加成功!!\n");
    printf("      编号   姓名   性别   出生日期          职称          工作年限\n");
    for (i = 0; fread(&emp[i],sizeof(struct employee),1,fp) == 1 ; i++)
    {
        printf("       %s    %s    %s    %s          %s          %d\n",emp[i].num,emp[i].name,emp[i].sex,emp[i].shengri,emp[i].degree,emp[i].nianxian);
    }
    fclose(fp);
}
               
2012-09-03 21:33
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
以下是引用zklhp在2012-9-3 21:07:49的发言:

从文件里面读struct employee这个结构的数据 我感觉写的不对 判断读取完成应该是判断==1么 这个函数的返回值不是实际读取的大小么 难道这个结构体的大小是1?

返回的是成功读取的结构体个数,一定 <= 第三个参数。
2012-09-03 22:11
快速回复:求C高手,帮忙解答一下!!万分感谢~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062096 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved