【发布时间】:2021-08-28 06:13:20
【问题描述】:
我是 C 新手,正在学习如何获取用户输入。下面是我的代码和执行打印输出。为什么char 输入会自动输入,我输入年龄输入(即 10)并按 ENTER?如果我把成绩输入放在年龄输入之前就不会有这个问题了。
代码
//get user variable
int age;
printf("Enter your age: ");
scanf("%d", &age);
printf("You are %d years old \n", age);
char grade;
printf("Enter your grade: ");
scanf("%c", &grade);
printf("You grade is %c \n", grade);
double gpa;
printf("Enter your gpa: ");
scanf("%lf", &gpa);
printf("You gpa is %f \n", gpa);
double name[5];
printf("Enter your name: ");
scanf("%s", name);
printf("You name is %s \n", name);
控制台打印输出
Enter your age: 10
You are 10 years old
Enter your grade: You grade is
Enter your gpa: 2.5
You gpa is 2.500000
Enter your name: ofbgeowfgboe
You name is ofbgeowfgboe
【问题讨论】:
-
scanf("%c", &grade);->scanf(" %c", &grade);。此外,您应该fflush(stdout)确保不以换行符结尾的printf调用在预期时间出现在输出中。 -
"学习如何获取用户输入" - 第一课:检查调用的函数是否指示成功。 TL;博士;
if(scanf(...) == the_expected_number_of_read_values) { /* success */ } else { /* fail */ } -
值得注意的是:
double name[5];和scanf("%s", name);是完全错误的。您可能需要char name[5]; scanf("%4s", name);(允许名称最多包含 4 个字符)。
标签: c