【发布时间】:2018-10-02 04:20:14
【问题描述】:
我编写了这个 C 程序来输入 3 个人的姓名和年龄。但输出不是我的预期。它可以输入第一人称的姓名和年龄,但不能输入第二人称和第三人称。请帮忙。
#include <stdio.h>
#include <string.h>
int main()
{
int i, age;
char name[20];
for(i=0; i<3; i++)
{
printf("\nEnter name: ");
gets(name);
printf("Enter age: ");
scanf(" %d", &age);
puts(name);
printf(" %d", age);
}
return 0;
}
【问题讨论】:
-
你应该检查
scanf()的返回值。在您的第二个循环中,如果您输入了一个名称,则该名称可能不会被%d转换,并且会留在输入中以便在下一次循环中读取 - 同时让您对正在发生的事情感到困惑。请参阅 Why thegets()function is to dangerous to be used — ever! 了解为什么不应该使用gets()以及有哪些替代方案可用。您应该测试替换(可能是fgets())是否成功。始终检查输入操作! -
感谢您的建议。