Struct 如何使用scanf()将数据直接输入到结构中的字符指针
以下代码已编译,但我在运行时遇到访问冲突Struct 如何使用scanf()将数据直接输入到结构中的字符指针,struct,Struct,以下代码已编译,但我在运行时遇到访问冲突 typedef struct login { char *name; char *pw; }login; int _tmain(int argc, _TCHAR* argv[]) { login user1, user2; GetUser(user1); printf("\nUN is %s, PW is %s", user1.name, user1.pw); GetUser(user2);
typedef struct login
{
char *name;
char *pw;
}login;
int _tmain(int argc, _TCHAR* argv[])
{
login user1, user2;
GetUser(user1);
printf("\nUN is %s, PW is %s", user1.name, user1.pw);
GetUser(user2);
printf("\nUN is %s, PW is %s", user2.name, user2.pw);
getch();
return 0;
}
void GetUser(login &user)
{
char *name;
name = (char*)malloc(20);
printf("Enter User Name: ");
fflush(stdin);
scanf("%s", name);
user.name = name;
printf("Enter password: ");
user.pw = GetPassword();
free(name);
}
如果我更改char*名称代码>到字符[20]代码>在结构中,代码工作正常
我使用malloc
修改了上述代码,但是在第二次调用GetUser(user2)之后
user1.name==user2.name
user1.pw
和user2.pw
与预期一样char*没有指向任何东西。您需要malloc
足够的字节来保存正在读取的输入。char*不指向任何内容。您需要malloc
足够的字节来保存正在读取的输入。您正在代码中使用引用类型。但是问题有c
tagvoid GetUser(login&user)
不是有效的c。您正在代码中使用引用类型
。但是问题有c
标记void GetUser(login&user)
是无效的c。将struct
更改为char name[20]是否更好
或更改GetUser(…)
函数?将struct
更改为char name[20]是否更好
或更改GetUser(…)
函数?