fgets читает символ новой строки из приглашения - PullRequest
0 голосов
/ 11 декабря 2018

Я должен отметить, что работает в другой среде: в нашем классе программирования мы обычно используем кодовые блоки IDE (что является ужасным), поэтому я просто использую компилятор gcc и vim в своем терминале(Я на арке).Я не сталкивался с проблемами до недавнего времени, когда мне приходилось читать строки, содержащие пробелы.Для этого я подумал, что использование функции fgets() будет хорошей идеей, но это создает некоторые проблемы.Вот как выглядит код:

void addStudent() {
    struct Student student;
    printf("Name of student: ");
    fgets(student.name, 25, stdin);
}

Это, однако, не запрашивает у меня ввода в моей оболочке, оно просто продолжается и сразу читает символ новой строки \n.Ребята, вы знаете, как это исправить?

1 Ответ

0 голосов
/ 12 декабря 2018

Как отмечается в комментариях, нехорошо объединять такие функции, как scanf() с fgets().Когда вызывается scanf(), он оставляет символ новой строки во входном буфере, который затем немедленно читается fgets(), вызывая сбой, запрашивая пользователя.

...