我正在使用结构在C中编写一个简单的程序。用户需要为结构输入一些值 - 名称和年龄。在我第一次输入数据后,第二次程序只是跳过其中一个字段,只希望我输入数据的第二个字段。我无法弄清楚出了什么问题。
struct Person {
char name[20];
int age;
};
void main(){
struct Person pArray[10];
for (int i = 0; i < 10; i++) {
printf("Please enter a name and age:\n");
printf("Name: ");
fgets(pArray[i].name, 20, stdin);
printf("Age: ");
scanf("%d", &pArray[i].age);
}
}
答案 0 :(得分:1)
我尽量不混合格式化和未格式化的输入(例如fgets
和scanf
)。以下是仅使用fgets
输入的程序:
#include <stdio.h>
struct Person {
char name[20];
int age;
};
int main(){
struct Person pArray[10];
char numberBuffer[20];
for (int i = 0; i < 10; i++) {
printf("Please enter a name and age:\n");
printf("Name: ");
fgets(pArray[i].name, 20, stdin);
printf("Age: ");
fgets(numberBuffer, 20, stdin);
sscanf(numberBuffer, "%d", &pArray[i].age);
}
}