我必须创建这个学生数据程序。有这个警告,我无法弄清楚

时间:2013-09-25 02:22:11

标签: c

所以我写出了这段代码并通过cygwin终端运行它!我清除了所有错误,但它只留下了我最后一次警告,我无法解决。

#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行。

1 个答案:

答案 0 :(得分:1)

尝试使用scanf("%d", &phoneNumber);并使用%d作为printf。在C及其派生词中,函数都是按值传递的。为了使函数能够修改变量,您需要传入该变量的地址而不是其值。这就是为什么您使用&作为前缀,以便将phoneNumber的地址输入scanf函数。但是,您只对&参数使用scanf,而不是在本地声明或使用变量。