Игнорирование ввода в строку с использование getchar() - C (СИ)
Формулировка задачи:
Доброго дня. Вопрос таков. Есть функция:
Функция вызывается циклически, несколько раз для двусвязного списка. Но не в том суть. Если вызвать функцию второй раз, третий раз, то данный цикл:
Не будет выполняться. Подозреваю, что в потоке остаётся '\n', после ввода числа. Как избавиться? Заранее спасибо.
P.S.: в плюсах было игнорирование std::cin.ignore();
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
Решение задачи: «Игнорирование ввода в строку с использование getchar()»
textual
Листинг программы
while (getchar() != '\n');
Объяснение кода листинга программы
- Используется функция getchar(), которая возвращает очередной символ, введенный пользователем
- Функция getchar() вызывается в цикле while
- В условии цикла while используется оператор сравнения, который проверяет, что введенный символ не является символом новой строки '\n'
- Если символ новой строки получен, то цикл while завершается
- После завершения цикла while программа продолжает работу с остальными символами, которые были введены пользователем
- Отсутствие обработки ошибок и исключений в коде может привести к непредсказуемому поведению программы при вводе некорректных символов или завершении ввода без ввода символа новой строки
- В данном коде не происходит игнорирования ввода, а лишь ожидается ввод символа новой строки для корректного завершения цикла while
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д