[英]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.