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);
}
在代码的第二次迭代中,执行将跳过“输入您的姓名:”部分。为什么?
最佳答案
输入年龄的末尾有一个换行符。
我建议您使用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';
}
附言::
fgets()
的末尾有换行符,因此您需要删除它。关于c - 迭代错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45094956/