У меня возникают некоторые проблемы при сохранении строки - например, имени - в поле структуры. Я использовал и gets()
, и fgets()
, но fgets()
тоже не работает должным образом.
У меня никогда не было возможности ввести имя первого сотрудника; он переходит прямо к коду сотрудника, а затем также пропускает адрес. По какой-то причине при вводе второго сотрудника я ввожу и имя, и код, а затем снова пропускает адрес.
Кто-нибудь знает, что я делаю неправильно?
#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;
}
scanf
s? Номер и ввод? Enter генерирует\n
.gets
/fgets
потребляет его, не дожидаясь дальнейшего ввода. Исправление? Добавляйтеgetchar();
после каждогоscanf
. - person Spikatrix   schedule 13.05.2016scanf
сложно правильно использовать. Я бы предпочел использоватьfgets
во временном буфере, а затемatoi
илиsscanf
результат, например Jonathan Leffler. - person Fred Larson   schedule 13.05.2016