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()を終了{し、次の行にぶら下がっています。アクティブがない場合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ステートメントかどうか尋ねました。私はそれがあなたが望むことをしないと思います。2 つの引数が一致すると、strcmp() は 0 を返します。また、2 つの異なる変数を同じ入力文字列と比較しています。

これを次の形式に書き直すとよいでしょう。

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

ユーザーにデータを入力させる場合は、2 つの個別の変数を使用してパスワードとユーザー名を保存し、1 つの if() ステートメントでテストを実行できるようにしてください。

strcmp() を参照してください。

于 2012-04-23T05:52:15.020 に答える