0
我已經定義了一個結構C:scanf的字符串字段船長在while循環上轉換說明施加「%*」
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 ]"
字段跳過,它會更好,但教科書告訴您使用它。
'%D'和'%F'已經跳過空白。所以它背後的空間是多餘的。實際上,只有'%c','%['和'%n'是空格重要的格式說明符。在添加之前,'%* [\ n \ t]'也是多餘的。 –
我通過在所有scanfs之前使用空白%並通過刪除%* [\ n \ t]來獲得它的工作。謝謝你的提示!我仍然不明白爲什麼字段跳過不符合教科書的說法。 – Hessu