La función fflush () no funciona con stdin

Lamento esta tonta pregunta. Tengo el programa C para solicitar al usuario que ingrese la edad y el nombre y luego imprima la edad y el nombre en la pantalla. Este es mi ejercicio que leí del libro.

Este es el programa:

#include <stdio.h>

int main (void) {
   int age;
   char name[20];

   puts("Enter your age:");
   scanf("%d",&age);

   fflush(stdin);

   puts("Enter your name:");
   scanf("%s",name);

   printf("Your age is %d\n",age);
   printf("Your name is %s\n",name);

   return 0;
}

Cuando ingreso caracteres adicionales al primeroscanf() el programa termina y asigna los caracteres adicionales al siguientescanf()

Y luego cambié el código y agregué una función llamadaclear_buff() y usando elfgets funcionar dentro delclear_buff() para leer los caracteres restantes en la secuencia. El código funciona como esperaba.

#include <stdio.h>

#define MAXLEN 80

void clear_buff(void);

int main (void) {
  int age;
  char name[20];

  puts("Enter your age:");
  scanf("%d",&age);

  clear_buff();

  puts("Enter your name:");
  scanf("%s",name);

  printf("Your age is %d\n",age);
  printf("Your name is %s\n",name);

  return 0;
}

void clear_buff(void){
   char junk[20];
   fgets(junk,MAXLEN,stdin);
}

Mi pregunta es porquefflush(stdin) no trabaja en este programa?

El libro dice quefflush La función borra todos los datos almacenados en la secuencia. Y sé quefflush() La función es la función estándar de C si se trabaja con flujo de E / S.

Respuestas a la pregunta(1)

Su respuesta a la pregunta