0

这是我得到的错误......我错过了什么吗?我试图移动大括号,但它仍然不喜欢 else 语句

“else”之前的 91 语法错误

void admin_signIn(struct profile *puser)
{
     int i=0;
     char input[20];
     strncpy( puser->UserName, "password", strlen("admin")+1 );     
     strncpy( puser->Pwd, "password", strlen("password")+1 );
     for(i=0;i<3;i++)
     {
     printf("Enter admin user name:");
     fgets(input,10,stdin);
     rewind(stdin);    
     printf("Enter admin password:");
     fgets(input,10,stdin);
     rewind(stdin);

     if(strcmp(puser->UserName,input) && strcmp(puser->Pwd,input));
      {
        printf("the user name is good");
      }
        admin_menu(puser);
    else
      {
      printf("try again");
      }
}
4

3 回答 3

5
 if(strcmp(puser->UserName,input) && strcmp(puser->Pwd,input));
                                                              ^---here

那个分号终止了 if(),然后你就{在下一行有一个悬空。没有 active if()else是不允许的。

于 2012-04-21T16:01:46.840 回答
2

有一个 admin_menu(puser); 在其他之前

于 2012-04-21T16:01:06.517 回答
0
if(strcmp(puser->UserName,input) && strcmp(puser->Pwd,input))

你问这是否是一个正确的 if 语句。我会说它没有做你想要的。当两个参数匹配时,strcmp() 返回 0。此外,您正在将两个不同的变量与相同的输入字符串进行比较。

您可能希望将其重写为以下形式:

if(!strcmp(puser->UserName,input_Username) && !strcmp(puser->Pwd,input_Password))
{
    /* good login */
}
else
{
    /* failed login */
}

当您让用户输入数据时,请务必使用两个单独的变量来存储密码和用户名,以便您可以在一个 if() 语句中进行测试。

见 strcmp()

于 2012-04-23T05:52:15.020 回答