我遇到了一些問題,例如將字符串(例如名稱)保存到struct字段中。我已經使用gets()
和fgets()
,但fgets()
也無法正常工作。使用gets()將字符串保存到結構中?
我從來沒有機會輸入第一個員工的名字;它直接跳到員工代碼,然後跳過地址。出於某種原因,輸入第二名員工時,我輸入姓名和代碼,然後再次跳過地址。
任何人都知道我在做什麼錯了?
#include <stdio.h>
typedef struct {
char name[150];
int code;
char add[300];
} tEmployee;
int main()
{
printf("How many employees would you like to register?\n");
int n;
scanf("%i", &n);
tEmployee employee[n];
for (int i = 0; i < n; i++)
{
printf("Name: ");
gets(employee[i].name);
printf("Code: ");
scanf("%i", &employee[i].code);
printf("Address: ");
gets(employee[i].add);
printf("%s\n", employee[i].name);
printf("%i\n", employee[i].code);
printf("%s\n", employee[i].add);
}
return 0;
}
切勿使用'gets()'。 –
[永遠不要使用gets()](http://stackoverflow.com/q/1694036/10077)。 –
還記得按下* scanf的*鍵嗎?數字和輸入?輸入生成'\ n'。 'gets' /'fgets'消耗它,因此不等待進一步的輸入。修復?在每個scanf後添加'getchar();'。 –