通过引用传递结构使用scanf

通过引用传递结构使用scanf,c,pointers,input,scanf,C,Pointers,Input,Scanf,我将一个struct info传递给一个函数,在该函数中,我使用scanf()将输入值分配给struct的内部变量。内部变量是一个无符号int 当我使用: scanf(“%u”,s->member)或scanf(“%u”,(*s.member)我收到一条警告: windows.c:62:36:警告:格式指定类型“unsigned int*”,但 参数的类型为“unsigned int”[-Wformat] 我跑的时候有个seg故障 如果我使用s.member或(&s).member我会得到一个编

我将一个struct info传递给一个函数,在该函数中,我使用scanf()将输入值分配给struct的内部变量。内部变量是一个
无符号int

当我使用:
scanf(“%u”,s->member)
scanf(“%u”,(*s.member)
我收到一条警告:

windows.c:62:36:警告:格式指定类型“unsigned int*”,但 参数的类型为“unsigned int”[-Wformat]

我跑的时候有个seg故障

如果我使用
s.member
(&s).member
我会得到一个编译器错误

因为我试图访问一个结构内部变量,所以我需要做一些不同的事情吗

我知道scanf()显然有问题,所以有些人说使用fgets(),这是scanf()的问题吗?

解决了,我需要使用

scanf("%u", &s->member);

当然,您必须始终对scanf参数(字符串除外)使用
&
。它与结构的传递方式无关。记住,C中没有按引用传递,而是按值传递。要模拟按引用传递,只需按值传递对象的地址作为参数。