c - 迭代错误

扫码查看

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/

10-11 07:58
查看更多