开发者社区> 问答> 正文

C语言 数据结构的问题

我定义了下面两个结构体
(第二个结构体里面是内核链表调用)

typedef struct flight {
        char ID[10];
        char departure[20];
        char arrival[20];
        char dep_date[8];
        char dep_time[4];
        char arr_time[4];
        float price;
        struct list_head list;
} flight;

typedef struct node {
        flight info;
        struct list_head list;
} flight_node, *p_flight;

然后我又写了两个函数

void clean_input_buf () {
        int buf;
        while((buf = getchar() != '\n') && buf != EOF);
}

void add_flight (p_flight node) {
        p_flight new_node;
        new_node = malloc (sizeof(flight_node));

        scanf ("%s", new_node->info.ID);
        clean_input_buf ();
}

然后在简单的输入输出测试里面我发现了一个怪异的问题

void add_flight (p_flight node) {
        p_flight new_node;
        new_node = malloc (sizeof(flight_node));

        scanf ("%s", new_node->info.ID);
        printf ("%s", new_node->info.ID);  //可以正常输出
        clean_input_buf ();
        printf ("%s", new_node->info.ID);  //段错误
}

出现这种问题的原因是什么?

展开
收起
杨冬芳 2016-05-30 19:23:01 2104 0
1 条回答
写回答
取消 提交回答
  • IT从业

    我觉得这句代码是有问题的:

    while((buf = getchar() != 'n') && buf != EOF);

    应该是:

    while((buf = getchar()) != 'n' && buf != EOF);

    2019-07-17 19:21:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
如何使用Tair增强数据结构构建丰富在线实时场景 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
低代码开发师(初级)实战教程 立即下载