获取用户输入无法正常工作

时间:2017-07-28 15:39:14

标签: c

我正在使用结构在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);
    }
}

正如你所看到的,在第一次进入Jonathan和45之后,它第二次跳过了名字,只想要年龄。为什么会这样? enter image description here

1 个答案:

答案 0 :(得分:1)

我尽量不混合格式化和未格式化的输入(例如fgetsscanf)。以下是仅使用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);
    }
}