manyouzhe16 2021-12-13 23:50 采纳率: 100%
浏览 47
已结题

C语言编写酒店点菜系统(大一新生项目),从文件里读取字符串对数组进行赋值的时候出现了问题

现在使用C语言编写酒店点菜系统(大一新生项目),从文件里读取字符串对数组进行赋值的时候出现了问题。下面进行单步调试。
疑点:而且明明i还没自增,order[1].price却读到了值,而且是文件里第一行的2
求给上述疑点做出解释,或给出正确的代码。
下面为单步调试的截图

img

img

img


若需要可以发源代码

  • 写回答

1条回答 默认 最新

  • 关注

    fscanf读取数据的地方不对,如下图所示:

    img

    你order中的结构体是怎么定义的? name和price都是char数组吗?没有必要的,price可以用int类型
    如果结构体元素都是char数组,读取文件的地方修改如下:

    int i = 0;
    while(!feof(fp1))
    {
        fscanf(fp1,"%s%s\n",order[i].name,order[i].price); //注意\n不要漏了,不需要&
        if(strcmp(order[i].name,"")!=0) //避免读到空行
            i++;
    }
    
    

    如果price用int类型,代码修改如下:

    
    int i = 0;
    while(!feof(fp1))
    {
        fscanf(fp1,"%s%d\n",order[i].name,&order[i].price);
        if(strcmp(order[i].name,"")!=0) //避免读到空行
            i++;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 修改了问题 12月13日
  • 修改了问题 12月13日
  • 展开全部