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;
p_flight init_list () {
p_flight head = malloc (sizeof (flight_node));
INIT_LIST_HEAD (&(head->list));
return head;
}
void add_flight (p_flight node) {
p_flight new_node;
new_node = malloc (sizeof(flight_node));
system ("clear");
printf (" \e[1;36m>\33[0m Importing new flight info:\n");
printf (" Please input the \e[1;33mID\33[0m of the filght: ");
scanf ("%s", new_node->info.ID);
printf (" Please input the \e[1;33mdeparture\33[0m of the filght: ");
scanf ("%s", new_node->info.departure);
printf (" Please input the \e[1;33marrival\33[0m of the filght: ");
scanf ("%s", new_node->info.arrival);
printf (" Please input the \e[1;33mdeparture date\33[0m of the filght: ");
scanf ("%s", new_node->info.dep_date);
printf (" Please input the \e[1;33mdeparture time\33[0m of the filght: ");
scanf ("%s", new_node->info.dep_time);
printf (" Please input the \e[1;33marrival time\33[0m of the filght: ");
scanf ("%s", new_node->info.arr_time);
printf (" Please input the \e[1;33mprice\33[0m of the filght: ");
scanf ("%f", new_node->info.price);
list_add (&(new_node->list), &(node->list)); //执行到这里会遇到段错误
}
int main (int argc, char *argv[]) {
printf ("\n\n\n");
p_flight list = init_list();
add_flight (list);
return 0;
}
我使用的是一个从linux内核源码独立出来的内核链表.h文件
在add_flight函数里,当我尝试将新节点链接到已经初始化的链表头的时候遇到了段错误
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)