feof(FILE *Stream)函数的使用问题

当未知文件长度,使用feof(FILE *Stream)判断文件结尾,它的实现原理:

feof(fp)通过fread/fscanf是否读写出错判断,应该在读写函数之后进行判断,否则多进行一轮循环

//必须用文件来存储员工信息:
    //开始运行程序时从文件中读取员工信息到链表,退出程序时将员工信息保存到文件中。
void Load() {
    if ((fp = fopen("Employee.txt", "ab+")) == NULL)
    {
        printf("打开文件出错!\n");
        exit(1);
    }
    //未知文件长度,使用feof(FILE *Stream)判断文件结尾
    while (!feof(fp))
    {
        //feof(fp)通过fread/fscanf是否读写出错判断,应该在读写函数之后进行判断,否则多进行一轮循环
        if (fread(&Employee1[i], sizeof(struct Employee), 1, fp) ==0)
        {
            continue;
        }
        Employee *p, *q;//分别用于指向第i个结点和待插入的新结点
        p = head;
        while (p->next != NULL)//把指针P定位到链表尾位置
        {
            p = p->next;
        }
        q = (Employee *)malloc(sizeof(Employee));//用指针Q申请新结点
        //存入数据到链表结点
        q->id = Employee1[i].id;
        strcpy(q->name, Employee1[i].name);
        strcpy(q->sex, Employee1[i].sex);
        q->age = Employee1[i].age;
        strcpy(q->department, Employee1[i].department);
        q->post = Employee1[i].post;
        q->workHour = Employee1[i].workHour;
        q->sales = Employee1[i].sales;//当月月销售额
        q->salary = Employee1[i].salary;//月工资
        q->next = p->next;//Q指针的next域指向P指针的next域,即第i个结点
        p->next = q;
        i++;
    }
    fclose(fp);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值