实名吃香菜 2021-12-01 13:39 采纳率: 75%
浏览 62
已结题

链表读入商品信息,编译发生错误

想要将商品信息读入链表中,但编译发生错误,求解;
代码如下:




```#include<stdio.h>
#include<stdlib.h>
#define GOODS_FILE_NAME "goodsinfo.txt"
#define MAX_ID_LEN 30
#define MAX_NAME_LEN 30
#define MAX_PRICE_LEN 30
#define MAX_DISCOUNT_LEN 30

extern int CurrentCnt;

typedef struct {
char goods_id[MAX_ID_LEN];
char goods_name[MAX_NAME_LEN];
int goods_price;
char goods_discount[MAX_DISCOUNT_LEN];
int goods_amount;
int goods_remain;
} GoodsInfo;


typedef struct node
{
GoodsInfo data;
struct node *next;
} GoodsList;

int main ()
{
    GoodsList **L;
    GoodsInfo info;
    GoodsList *head_list=(GoodsList*)malloc(sizeof(GoodsList)),*p;
    *L=head_list;
    FILE *fp=fopen("goodsinfo.txt","r");
    if(fp==NULL){
        printf("error: file not found");
        return 0;
    }
    else {
        while(!feof(fp)) {
            fscanf(fp,"%s%s%d%s%d%d",info.goods_id,info.goods_name,&(info.goods_price),info.goods_discount,&(info.goods_amount),&(info.goods_remain));
            p=(GoodsList *)malloc(sizeof(GoodsList));
            head_list->next=p;
            head_list->data=info;
            CurrentCnt++;
        }
    }
    fclose(fp);
    p->next=NULL;
    printf("商品的链表文件已建立,有%d个商品记录\n", CurrentCnt);
}
    
编译错误如下:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/777831733836152.png "#left")
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-12-01 15:33
    关注

    供参考:

    #include<stdio.h>
    #include<stdlib.h>
    #define GOODS_FILE_NAME "goodsinfo.txt"
    #define MAX_ID_LEN 30
    #define MAX_NAME_LEN 30
    #define MAX_PRICE_LEN 30
    #define MAX_DISCOUNT_LEN 30
    extern int CurrentCnt;
    typedef struct {
        char goods_id[MAX_ID_LEN];
        char goods_name[MAX_NAME_LEN];
        int  goods_price;
        char goods_discount[MAX_DISCOUNT_LEN];
        int  goods_amount;
        int  goods_remain;
    } GoodsInfo;
    
    typedef struct node
    {
        GoodsInfo data;
        struct node* next;
    } GoodsList;
    int main()
    {
        GoodsList* L = (GoodsList*)malloc(sizeof(GoodsList));
        L->next = NULL;
        GoodsInfo info;
        GoodsList* head_list = L, * p;
        FILE* fp = fopen("goodsinfo.txt", "r");
        if (fp == NULL) {
            printf("error: file not found");
            return 0;
        }
        else {
            while (!feof(fp)) {
                fscanf(fp, "%s%s%d%s%d%d", info.goods_id, info.goods_name, &info.goods_price, info.goods_discount, &info.goods_amount, &info.goods_remain);
                p = (GoodsList*)malloc(sizeof(GoodsList));
                p->data = info;
                p->next = NULL;
                head_list->next = p;
                head_list = p;
                CurrentCnt++;
            }
        }
        fclose(fp);
        //p->next = NULL;
        printf("商品的链表文件已建立,有%d个商品记录\n", CurrentCnt);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装