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.