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); //段错误
}
出现这种问题的原因是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么段错误我不太清楚,但是下面这句代码是有问题的:
while((buf = getchar() != '\n') && buf != EOF);
应该是:
while((buf = getchar()) != '\n' && buf != EOF);