得到我的if语句错误,我不明白为什么

问题描述:

这是我得到的错误....我错过了什么?我试图走动括号,但它仍然没有之前的“其他”得到我的if语句错误,我不明白为什么

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"); 
     } 
} 
+0

如果收到有关消息'else',为什么不检查线路只是_above_了'else'?哦,你错过了一个'}'来结束循环。 – 2012-04-21 16:00:58

+0

你为什么不移动admin_menu(puser); 到底? – 2012-04-21 16:01:04

+0

'wd,input));'去掉分号会让你在某个地方。 – wildplasser 2012-04-21 16:03:58

有一个admin_menu(puser)喜欢else语句

91语法错误;否则

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

在此之前分号终止,如果(),然后你拿到下一行一个叼着{。如果没有活动的if(),则不允许使用else

+0

omg duh ....对不起,我一直在看这个很长 – lilvenus 2012-04-21 16:07:32

+0

这是否如果陈述看起来是正确的你们,就像它会工作我试图比较用户输入什么已存储 – lilvenus 2012-04-21 16:47:01

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()