scanf未按预期工作

时间:2014-03-29 15:11:19

标签: c++ c printf scanf

我想从用户年龄,性别(m / f),婚姻状况(m / u)中选择3个输入。 我使用char数据类型来表示性别和婚姻状况。这是下面的代码..

#include<stdio.h>
#include<conio.h>

main() {
int age;
char gender,marital_status;
printf("Enter your age: ");
scanf("%d",&age);
printf("Enter your gender (m/f): ");    
scanf("%c",&gender);
printf("\nEnter your marital status (m/u): ");      
scanf("%c",&marital_status);


}

年龄部分是核心工作,即它需要用户的年龄并将其存储到年龄。但之后,两个printf语句一下子显示出来。如何逐一显示它们以从用户那里获取性别和婚姻状况。

1 个答案:

答案 0 :(得分:3)

这是因为%c接受了'\n'符号,这些符号在进入年龄后遗留下来。你最好读一个字符串,并取第一个字符,如下所示:

char buf[2];
printf("Enter your gender (m/f): ");
scanf("%1s", buf);
gender = buf[0];
printf("\nEnter your marital status (m/u): ");
scanf("%1s", buf);
marital_status = buf[0];

%s格式说明符设置为忽略所有空格。请注意格式说明符中%后的一个字符限制。