Чтение до конца строки

Мне нужно дочитать строку до конца(чтобы в следующий раз при вводе строки оно не читало тот остаток), после того как я с помощью scanf прочитаю число. Причем независимо от того прочиталось с ошибкой или нет.

Правильно ли я понимаю, что эти 2 варианта эквивалентны ?

fscanf(stdin, "%*[^\n]"); // 1 способ

while (fgetc(stdin) != '\n'); // 2 способ

Просто 1 вариант я считаю нечитаемым совсем.


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Нет, они разные. Первый вариант читает до конца строки, а символ перевода оставляет в потоке. Второй вариант читает до начала следующей строки строки. Первый вариант можно исправить так:

fscanf(stdin, "%*[^\n]\n");

Второй вариант зациклится в случае ошибки чтения.

→ Ссылка