【问题标题】:error compile - in linked list in C [closed]错误编译-在C中的链表中[关闭]
【发布时间】:2013-06-21 05:45:20
【问题描述】:

代码在编译时出现错误,我不知道为什么 问题是关于一家保单公司,但与此无关 只是为了让你明白我在做什么

我认为错误在“(*h)=temp”行中

typedef struct
{
    char  cmp_name[20];
    int   pol_code;
    float pol_price;
    int   drivers;
    float new_d;
    float old_d;
} POL;

typedef struct node
{
    POL         policy;
    struct node *next;
} NODE;

  void ins(NODE **h,NODE *p)
{
NODE *temp;
temp=(NODE*)malloc(sizeof(NODE));

if(p==NULL)
{
(*h)=temp;
temp->next=NULL;
}
else
{
p->next=temp;
p=p->next;
temp->next=NULL;
}

    printf("\nEnter Company Name: ");
    scanf("%s",temp->policy.cmp_name);
    printf("\nEnter Policy Code: ");
    scanf("%d",temp->policy.pol_code);
    printf("\nEnter Policy Price: ");
    scanf("%f",temp->policy.pol_price);
    printf("\nEnter Number of Drivers: ");
    scanf("%d",temp->policy.drivers);
    printf("\nAddon for a New Driver: ");
    scanf("%f",temp->policy.new_d);
    printf("\nAddon for a Old Driver: ");
    scanf("%f",temp->policy.old_d);

}

【问题讨论】:

  • 注意:我没有粘贴整个代码..它不完整但是当涉及到“scanf”时,编译器给了我错误
  • scanf 取指针
  • 如果有人输入了 20 个(或更多)字符的名字会怎样?
  • 我想我们都同意接受来自流的输入比简单地fscanf-ing 它更复杂。但那是我们的学徒朋友自己找出来的;)
  • @user2422824,所以更新前的代码和你的问题没有关系?另外,您是如何得出错误在(*h)= 的结论的

标签: c linked-list


【解决方案1】:
NODE *temp; // This variable is uninitialized. It "points" to a region you haven't allocated.

然后你在这里取消引用它:

scanf("%s",temp->policy.cmp_name);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多