#include <stdio.h>
#include <conio.h>
struct person {
char name[50];
int id;
int age;
};
int main() {
struct person p[4];
int i;
for (i = 0; i < 4; i++) {
printf("Enter the person%d details\n", i + 1);
gets(p[i].name);
scanf("%d", &p[i].id);
scanf("%d", &p[i].age);
}
printf(
"------------------------------------------------------------------");
for (i = 0; i < 4; i++) {
printf("\nPerson%d details\n", i + 1);
printf("Name:%s\nID:%d\nAge:%d\n", p[i].name, p[i].id, p[i].age);
printf("---------------------------------------------------------------"
"---");
}
getch();
return 0;
}
输出:C结构串读出错误
Enter person1 details
mark mike
123
24
Enter person2 details
sourav ganguly
Enter person3 details
的问题是为什么scanf
不接受person2 id and age
细节。任何帮助,将不胜感激。
频繁重复 - 对于同样的问题,存在很多等同的问题。 '%d'格式在缓冲区中保留了换行符,而'gets()'(它不应该被首先使用) - 使用'fgets()'代替)将新行读为整条线。如果您也注意输入函数的返回值,那么您会知道更多 - 您不能检查输入函数。 – 2014-09-03 14:53:20