我想通过scanf()
将字符串读入结构成员。 如果我发起这样一个结构,它会编译并运行就好:c-scanf通过使用结构指针将字符串转换为结构
typedef struct list {
char name[10];
...
} List;
List p;
scanf("%s", p.name);
printf("%s\n", p.name);
如果我通过指针则仍编译罚款发起的结构,但由此产生的程序崩溃:
typedef struct list {
char name[10];
...
} List;
List *p;
scanf("%s", p->name);
printf("%s\n", p->name);
为什么会发生这种情况?
你的malloc-ING P +您的直接问题看起来像一个空指针问题。 – Cody
你需要初始化'p'指向某些有效的东西 - 一个本地或全局的'struct list'对象或动态分配的内存(例如通过'malloc()')。当你的代码站立时,'p'指向无效 - 它是未初始化的。 –
您必须将您的编译器设置为产生最可能的警告并将它们视为错误。如果您使用的是常用命令行工具,请至少在编译命令中添加'-Wall -Werror'。如果你正在使用IDE,我不知道,也许会摆弄菜单。 –