Игнорирование ввода в строку с использование getchar() - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго дня. Вопрос таков. Есть функция:
void add_element(list* l)
{
    _node *tmp = (_node*)malloc(sizeof(_node));
    tmp->next = tmp->prew = NULL;
    printf("Введите имя: ");
    int i = 0;
    //scanf("%s", &tmp->name);
    while ((tmp->name[i++] = getchar()) != '\n'); // вводим до entera
    tmp->name[i - 1] = '\0'; // последний символ, а именно('\n'), заменяем на нулевой байт
    //
    printf("Введите возраст: ");
    scanf("%d", &tmp->age);
    printf("Введите год рождения: ");
    scanf("%d", &tmp->year);
    add(l, tmp);
}
Функция вызывается циклически, несколько раз для двусвязного списка. Но не в том суть. Если вызвать функцию второй раз, третий раз, то данный цикл:
while ((tmp->name[i++] = getchar()) != '\n'); // вводим до entera
Не будет выполняться. Подозреваю, что в потоке остаётся '\n', после ввода числа. Как избавиться? Заранее спасибо. P.S.: в плюсах было игнорирование std::cin.ignore();

Решение задачи: «Игнорирование ввода в строку с использование getchar()»

textual
Листинг программы
while (getchar() != '\n');

Объяснение кода листинга программы

  1. Используется функция getchar(), которая возвращает очередной символ, введенный пользователем
  2. Функция getchar() вызывается в цикле while
  3. В условии цикла while используется оператор сравнения, который проверяет, что введенный символ не является символом новой строки '\n'
  4. Если символ новой строки получен, то цикл while завершается
  5. После завершения цикла while программа продолжает работу с остальными символами, которые были введены пользователем
  6. Отсутствие обработки ошибок и исключений в коде может привести к непредсказуемому поведению программы при вводе некорректных символов или завершении ввода без ввода символа новой строки
  7. В данном коде не происходит игнорирования ввода, а лишь ожидается ввод символа новой строки для корректного завершения цикла while

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы