weixin_75182303 2022-12-21 16:32 采纳率: 100%
浏览 27
已结题

while(!feof(fp))只能读取一行数据是为什么啊


#include<stdio.h>
#include<stdlib.h>

typedef struct loupan {
    int dong;
    int danyuan;
    int room;
    enum {东=1,南=2,西=3,北=4,东南=5,东北=6,西南=7,西北=8}orientation;
    enum {复式=1,平层=2,错层=3,跃层}type;
    double square;
    enum{no=0,yes=1}sale;
    double unitprice;
    double all;
}loupan;
FILE* fp;
loupan fang[1000] = { 0 };
void addin() {
    fp = fopen("D:\\qsy.dat", "w+");
    int i;
    for (i = 0;; i++) {
        scanf_s("%d", &fang[i].dong);
        if (fang[i].dong == 0) break;
        fprintf(fp, "%d ", fang[i].dong);
        scanf_s("%d%d ",&fang[i].danyuan, &fang[i].room);
        scanf_s("%d%d", &fang[i].orientation,&fang[i].type);
        scanf_s("%lf%d%lf", &fang[i].square,&fang[i].sale,&fang[i].unitprice);
        fang[i].all = fang[i].unitprice * fang[i].square;
        fprintf(fp, "%d %d %d %d %lf %d %lf %lf\n", fang[i].danyuan, fang[i].room, fang[i].orientation, fang[i].type, fang[i].square, fang[i].sale, fang[i].unitprice,fang[i].all);
    }
    fclose(fp);
}
void displyout() {
    fp = fopen("D:\\qsy.dat", "w+");
    int i=0;
    while (!feof(fp)) {
        fscanf_s(fp,"%d %d %d %d %d %lf %d %lf %lf\n",&fang[i].dong,&fang[i].danyuan, &fang[i].room, &fang[i].orientation, &fang[i].type, &fang[i].square, &fang[i].sale, &fang[i].unitprice,&fang[i].all);
        printf("栋:%d 单元:%d 房间:%d ", fang[i].dong, fang[i].danyuan, fang[i].room);
        switch (fang[i].orientation) {
        case 1:printf("朝向:东   "); break;
        case 2:printf("朝向:南   "); break;
        case 3:printf("朝向:西   "); break;
        case 4:printf("朝向:北   "); break;
        case 5:printf("朝向:东南 "); break;
        case 6:printf("朝向:东方 "); break;
        case 7:printf("朝向:西南 "); break;
        case 8:printf("朝向:西北 "); break;
        }
        switch (fang[i].type) {
        case 1:printf("户型:复式 "); break;
        case 2:printf("户型:平层 "); break;
        case 3:printf("户型:错层 "); break;
        case 4:printf("户型:跃层 "); break;
        }
        printf("面积:%lf ", fang[i].square);
        switch (fang[i].sale) {
        case 1:printf("是否已销售:yes "); break;
        case 2:printf("是否已销售:no "); break;
        }
        fang[i].all = fang[i].unitprice * fang[i].square;
        printf("单价:%lf 总额:%lf\n", fang[i].unitprice,fang[i].all);
        i++;
    }
    fclose(fp);
    
}

void main(){
    addin();
    displyout();
  • 写回答

3条回答 默认 最新

  • 於黾 2022-12-21 16:52
    关注

    那你先想办法打开qsy.dat看看,里面到底有几行数据呀

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”