得到我的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");
}
}
答
有一个admin_menu(puser)喜欢else语句
91语法错误;否则
答
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()语句中进行测试。
如果收到有关消息'else',为什么不检查线路只是_above_了'else'?哦,你错过了一个'}'来结束循环。 – 2012-04-21 16:00:58
你为什么不移动admin_menu(puser); 到底? – 2012-04-21 16:01:04
'wd,input));'去掉分号会让你在某个地方。 – wildplasser 2012-04-21 16:03:58