2

なぜ私は得るのformat '%s' expects argument of type 'char*'ですか?問題を解決するにはどうすればよいですか?

ここに私のコードがあります:

char UserName[] = "iluvcake";
scanf("%s", &UserName);
printf("Please enter your password: \n");
char PassWord[] = "Chocolate";
scanf("%s", &PassWord);
    //if...else statement to test if the input is the correct username. 
    if (UserName == "iluvcake") 
    {
     if (PassWord == "Chocolate"){
     printf("Welcome!\n");
    }
    }else
    {
     printf("The user name or password you entered is invalid.\n");
    }
4

5 に答える 5

4

&UserName は、char の配列 (つまり、char**) へのポインターです。使用する必要があります

scanf( "%s", UserName );
于 2013-04-03T14:50:12.270 に答える
0

でなければなりません

scanf("%s", UserName);
scanf("%s", PassWord);

UserNameとは配列PassWordへのポインタであるためです。char

于 2013-04-03T14:50:11.097 に答える
0
  1. %s の scanf は、それへのポインタではなく、char 配列/ポインタを取ります。をステートメント&から削除します。scanf
  2. 文字列を と比較することはできません==。を使用しstrcmpます。
于 2013-04-03T14:52:05.293 に答える