У меня возникли проблемы с сохранением строки - например, имя - в поле структуры. Я использовал gets()
и fgets()
оба, но fgets()
тоже не работает.Сохранение строк в structs с помощью 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's? Номер и ввод? Enter генерирует '\ n'. 'gets' /' fgets' потребляет его, поэтому не дожидается ввода furthur. Исправить? Добавьте 'getchar();' после каждого 'scanf'. –