Как перед следующей итерацией опустошить stdin - C (СИ)

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

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

Ситуация. В программе есть цикл. До цикла объявление
char c;
В начале цикла:
scanf ("%c", c);
ну или
с = getchar ();
Наверное, разница не играет большой роли. Внимание вопрос, как перед следующей итерацией опустошить stdin, чтобы из него не вылез, например символ новой строки, попадающий туда после нажатие Энтера?

Решение задачи: «Как перед следующей итерацией опустошить stdin»

textual
Листинг программы
#include <stdio.h>
 
int main( void )
{
   int integer;
   char string[81];
 
   /* Read each word as a string. */
   printf( "Enter a sentence of four words with scanf: " );
   for( integer = 0; integer < 4; integer++ )
   {
      scanf( "%s", string );      
      // Security caution!
      // Beware allowing user to enter data directly into a buffer
      // without checking for buffer overrun possiblity.
      printf( "%s\n", string );
   }
   /* You must flush the input buffer before using gets. */
   fflush( stdin );   // fflush on input stream is an extension to the C standard
   printf( "Enter the same sentence with gets: " );
   gets( string );
   printf( "%s\n", string );
}

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


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

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

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