C语言结构体、变量问题

#include
typedef struct user{
char *name; //玩家用户名
double score; //游戏所用时间
}User;

User *user;

void login() //输入用户名
{
char a[20],*p=a;

printf("please input your ID:\n");
gets(p);
user->name=p;
return ;

}

int main()
{

login();
printf("%s",user->name);
return 0;

}

为什么程序运行不了呢?

局部变量在函数运行完会被销毁
建议给指针开辟空间 或者用全局变量

User * user ,这个user是指向User类型的指针,你这个指针为空,并没有指向一个结构体 , 去掉*试一下

User *user;改成User user;后面使用name的时候将箭头改成点,user.name

你定义的数组是在函数里面,函数执行结束,函数里面的数据就会被回收,你的name 指向了无效的地址了

再加上,你什么时候给它分配内存了。哪里来的对象。只是定义了指针。

User *user;

这里没有分配内存