Чтение до конца строки
Мне нужно дочитать строку до конца(чтобы в следующий раз при вводе строки оно не читало тот остаток), после того как я с помощью scanf прочитаю число. Причем независимо от того прочиталось с ошибкой или нет.
Правильно ли я понимаю, что эти 2 варианта эквивалентны ?
fscanf(stdin, "%*[^\n]"); // 1 способ
while (fgetc(stdin) != '\n'); // 2 способ
Просто 1 вариант я считаю нечитаемым совсем.
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Нет, они разные. Первый вариант читает до конца строки, а символ перевода оставляет в потоке. Второй вариант читает до начала следующей строки строки. Первый вариант можно исправить так:
fscanf(stdin, "%*[^\n]\n");
Второй вариант зациклится в случае ошибки чтения.