0

我已经定义了一个结构

typedef struct EMP {
    char name[100];
    int id;
    float salary;
} EMP;

我在while循环中使用它作为输入

EMP emprecs[3];
int i;

i = 0;
while (i < 3) {
    printf("\nEnter Name: ");
    scanf("%*[\n\t ]%[^\n]s", emprecs[i].name);
    printf("\Enter Id: ");
    scanf("%d", &emprecs[i].id);
    printf("\nEnter Salary: ");
    scanf("%f", &emprecs[i].salary);
    i++;
}

但循环只接受名字并跳过之后的所有其他输入(它完成,但输入为空)。这个例子来自C教科书,那么问题出在哪里?

如果不跳过字段,它的效果会更好"%*[\n\t ]",但教科书告诉你要使用它。

4

1 回答 1

-3

尝试这个

scanf(" %*[\n\t ]%[^\n]s", emprecs[i].name);
      ^^^
     White space

代替

scanf("%*[\n\t ]%[^\n]s", emprecs[i].name);

还,

scanf(" %d", &emprecs[i].id);

scanf(" %f", &emprecs[i].salary);
于 2017-04-14T11:19:23.377 回答