Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct 如何使用scanf()将数据直接输入到结构中的字符指针_Struct - Fatal编程技术网

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
tag
void GetUser(login&user)
不是有效的c。您正在代码中使用
引用类型
。但是问题有
c
标记
void GetUser(login&user)
是无效的c。将
struct
更改为
char name[20]是否更好
或更改
GetUser(…)
函数?将
struct
更改为
char name[20]是否更好
或更改
GetUser(…)
函数?