c - C 中检查登录信息的结构

标签 c struct

我必须创建一个程序,只允许 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/

相关文章:

C:与字符串一起保存结构的动态数组

C - 我可以从 char * 创建一个 const char * 变量吗?

c - 如何在 C 结构中访问指向二维数组的指针?

arrays - 我不明白为什么我的代码适用于我的结构数组,但不适用于包含此结构数组的结构?

c - libjpeg/CreateDIBSection 问题

c++ - 错误 : expected primary-expression before ‘)’ token cast issue

c - 如何正确释放链表的所有元素?

计算字符串中出现的次数

c - 如何处理 c 中的 196,608 个 if 语句?

C99 : Call main function from another 'main' ?