-3

そこで、このコードを書き、cygwin ターミナルで実行しました。すべてのエラーをクリアしましたが、修正できない最後の警告が 1 つだけ残っています。

#include <stdio.h>
int main (int argc, char *argv[]) {
        int phoneNumber;
        char firstName[11];
        char lastName[11];
        char eMail[20];

        printf("Please enter the user's first name:");
        scanf("%s", firstName);
        printf("Please enter the user's last name:");
        scanf("%s", lastName);
        printf("Please enter the user's phone number:");
        scanf("%i", phoneNumber);
        printf("Please enter the user's e-mail:");
        scanf("%s", eMail);
        printf("firstName, lastName, phoneNumber, eMail: %s, %s, %i, %s", firstName, lastName,
phoneNumber, eMail);
}

コードがあります。Cygwinエラーは私に伝えます:

警告: format は型 'int' を指定していますが、引数の型は 'int *' です [-Wformat]

これは、%i がある最後の printf 行を参照します。

4

1 に答える 1

1

scanf("%d", &phoneNumber);にも使っ%dてみてくださいprintf。C およびその派生物では、関数はすべて値渡しです。関数で変数を変更するには、その変数の値ではなくアドレスを渡す必要があります。&そのため、のアドレスを関数に取得するためにphoneNumberプレフィックスscanfを付けます。ただし、変数をローカルで宣言または使用するためではなく&、引数にのみ使用します。scanf

于 2013-09-25T02:53:20.540 に答える