C语言 数据结构的问题

发布于 2022-09-02 09:07:46 字数 1112 浏览 12 评论 0

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

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);  //段错误
}

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬シ愛 2022-09-09 09:07:46

为什么段错误我不太清楚,但是下面这句代码是有问题的:

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

应该是:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文