总票价那个printf没输出怎么回事

    char checi[20],name[20];
    int  num,idcard;
    printf("车次:");
       scanf("%s",checi);
    printf("订票数:");
       scanf("%d",&num); 
    while(line)
    {
        if(strcmp(line->sequence,checi)==0)
        {
            if(line->SpareTicketNum>=num)
              {
                  printf("姓名:");
                  scanf("%s",name); 
                printf("身份证号:");
                  scanf("%d",idcard);
                printf("总票价:%.2f",1.0*num*line->fare);
                break;
              }
            else
              {
                printf("余票数不足,订票失败!\n");
                break;
              }
        }
        line=line->next;
    }

scanf("%d",idcard);
改为
scanf("%d",&idcard);