我已经定义了一个结构
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 ]"
字段跳过,它会更好一些,但教科书会告诉您使用它。
答案 0 :(得分:-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);