我必须创建一个程序,只允许 5 个人使用预定的用户 ID 和密码登录。我认为在函数中定义它们然后将它们保存在结构中将是执行此操作的最佳方法。到目前为止我已经:
struct nurse
{
char id[5];
char password[5][8];
}*record[5];
int main(void)
{
record.id=1;
strcopy(record.id, "username");
strcopy(record.password, "password");
printf("Please Enter your username: ");
scanf("%s", id);
if (id != username)
{
printf("Error. Record not found.");
}
不幸的是,我收到了错误消息,显示“[Error] request for member 'id' in some not a structure or union”以及“password”的相同错误。
我该如何解决这个问题?
最佳答案
您显示的代码中有多个错误。
首先,record
是一个由五个指针组成的数组,指向struct护士
。
它应该是一个结构对象数组:
struct nurse { ... } record[5]; // No *, no pointers
第二个问题是您没有名为 id
的变量,所以
scanf("%s", id);
不会工作。
第三个问题是您使用了未知函数strcopy
,而我相信您的意思是使用标准 strcpy
功能。
第四个问题是结构体id
成员只能包含四个字符的字符串,因为空终止符需要一个元素。然后您尝试将(在所示示例中)更长的字符串复制到该数组中。
第五个问题是不能使用==
或!=
来比较字符串。您应该使用 strcmp
比较字符串的函数。
第六个问题是结构体的password
成员是一个数组的数组,并且你尝试将一个字符串复制到password
因为它是单个字符串。
第七个问题是您将结构 id
成员视为字符串和单个整数值。不可能两者兼而有之。
可能还有更多问题,但这些应该足以开始。
总而言之,您似乎缺少一些基本的 C 知识,可以阅读一些书籍或参加一些类(class)。
关于c - C 中检查登录信息的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59069744/