Можно ли использовать fseek (stdin, 1, SEEK_SET) или rewind (stdin) для очистки входного буфера вместо непереносимого fflush (stdin)?

Так как я обнаружилfflush(stdin) не переносимый способ справиться со знакомой проблемой "новая строка скрывается во входном буфереЯ использовал следующее, когда ядолжен использовать:scanf

while((c = getchar()) != '\n' && c != EOF);

Но сегодня я наткнулся на эту строку, которую я заметил изcplusplus.com на fflush:

fflush () ... в файлах, открытых для обновления (то есть открытых как для чтения, так и для записи), поток должен быть очищен после операции вывода перед выполнением операции ввода. Это может быть сделано либо путем изменения положения (fseek, fsetpos, rewind), либо путем явного вызова fflush

На самом деле, я читал это много раз. Итак, я хочу подтвердить, могу ли я просто использовать кого-либо из следующего передscanf() служить той же цели, чтоfflush(stdin) служит, когда это поддерживается:

fseek(stdin,1,SEEK_SET);
rewind(stdin);

PS rewind(stdin) кажется довольно безопасным и работоспособным для очистки буфера, я не прав?

ошибка Я должен был упомянутьfseek(stdin,0,SEEK_SET) если мы говорим оstdin как мы можемt использовать любое смещение, кроме 0 или возвращенноеftell() в таком случае.

Ответы на вопрос(1)

Ваш ответ на вопрос