evgeniy8705
@evgeniy8705
Повелитель вселенной

Как исправить ошибки в структуре данных?

Нужно было реализовать структуру. Вот попробовал, но почему то программа не правильно работает. Подскажите где в решении неправильно записано, что при запуске программы, она пропускает ввод ФИО и группы.

void structFunc() {
  typedef struct {
    int day, month, year;
  } DATA;

  typedef struct {
    char fio[50];
    DATA birth;
    int number;
    char group[10];
  }  STUD;


  STUD stud[10];
  printf("\nInput the number of thr grade book: ");
  scanf("%d", &stud[0].number);
  printf("Input FIO: ");
  scanf("%s", &stud[0].fio);
  printf("Input date of birth (dd/mm/yyyy): ");
  scanf("%d/%d/%d", &stud[0].birth.day, &stud[0].birth.month, &stud[0].birth.year);
  printf("Input group: ");
  scanf("%s", &stud[0].group);
  printf("%d %s %s %d/%d/%d", stud[0].number, stud[0].fio, stud[0].group, stud[0].birth.day, stud[0].birth.month, stud[0].birth.year);

}


PS: В общем проблемы начинаются если вводит ФИО: есть ввести слова через пробел то все рушится, а если ввести одним словом то норм все.
  • Вопрос задан
  • 2318 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vilgeforce
Раздолбай и программист
Забавный баг :-) scanf() начинает обработку введенной строки, после того как нажат Enter. При этом, судя по всему, символы переводы строки (0x0D и/или 0x0A) остаются в буфере ввода и с ними работает gets(). gets заканчивает прием данных после обнаружения этих байт. Как-то так, думаю. Но не нашел описания такой особенности у scanf(). Пробуйте везде scanf() вместо gets()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы