我的if语句出错,我无法弄清楚原因

时间:2012-04-21 15:59:44

标签: c

这是我得到的错误....我错过了什么?我试图移动大括号,但它仍然不喜欢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");
      }
}

3 个答案:

答案 0 :(得分:5)

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

分号终止了if(),然后你就在下一行有一个悬空{。如果没有有效if(),则不允许使用else

答案 1 :(得分:2)

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

答案 2 :(得分: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 */
}

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

See strcmp()