繁体   English   中英

scanf取一个struct元素的值给C linux中的段错误

[英]scanf taking value of a struct element giving seg fault in C linux

我的scanf语句给段错误。 你能告诉我为什么吗?

typedef struct message1
{
    int call_id1;
    int lac;
    long int attribute;
    int conn_id;
    struct message1 *next1;
}M1;
M1 *last=NULL;
main()
{
    printf("\nEnter Call Id\t");
    scanf("%d",&last->call_id1);
}

您试图读入未分配内存的结构

M1 * last = malloc(sizeof(struct message1)); //在全球空间

要么

最后= malloc(sizeof(struct message1)); //在主函数中

因为您使用NULL初始化了结构指针。

M1 last; 

足够。

无需提供任何指针。 如果您希望将其用作指针,请使用malloc

M1 *last;
last = malloc(sizeof(M1));

显然...未初始化为适当的值:

M1 *last=NULL;

应该

M1 *last= (M1*)malloc(sizeof(M1));

您尚未为结构M1分配内存,并尝试访问其内存内容,这是分段错误的原因,

动态分配内存, M1 *last = malloc(sizeof(M1));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM