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