所以我写出了这段代码并通过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行。
答案 0 :(得分:1)
尝试使用scanf("%d", &phoneNumber);
并使用%d
作为printf
。在C及其派生词中,函数都是按值传递的。为了使函数能够修改变量,您需要传入该变量的地址而不是其值。这就是为什么您使用&
作为前缀,以便将phoneNumber
的地址输入scanf
函数。但是,您只对&
参数使用scanf
,而不是在本地声明或使用变量。