int age, i;
char name[10], address[10];
for( i=0; i<3; i++ )
{
printf("Enter your name: ");
gets(name);
printf("Where do you live?");
gets(address);
printf("What's your age? ");
scanf("%d", &age);
}
在代码的第二次迭代中,执行会跳过“输入您的姓名:”部分。为什么呢?
答案 0 :(得分:0)
在进入年龄结束时有一个换行符。
我建议您使用fgets()
代替gets()
,并在扫描age
在阅读年龄后,通过在\n
之后放置一个空格来消耗%d
个字符。
scanf("%d ",&age);
fgets(name, sizeof(name), stdin);
size_t n = strlen(name);
if(n>0 && name[n-1] == '\n')
{
name[n-1] = '\0';
}
P.S :: fgets()
末尾有一个换行符,所以你需要摆脱它。
答案 1 :(得分:0)
更改
scanf("%d", &age);
到
scanf("%d ", &age);
这样它就会读取空白区域(新行)。
如评论中所述,摆脱gets
检查scanf