实名吃香菜 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日

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据