Programación General > C/C++

 fflush (stdin) , flusshal. cuando usarlos? como funcionan?

(1/2) > >>

kingsizen:
hola amigos del foro. como dice el titulo quisiera saber cuales de estas dos funciones usar para limpiar el buffer, el dev-c++ no reconoce flusshal(), pero en un examen final vi que lo utilizan.

ahora algunas veces por ejemplo tengo:
sentencias;
..;
..;
c=getchar();

y el programa sigue de largo, por lo que para que tome un caracter hay ke ponerle
sentencias;
..;
..;
c=getchar();
c=getchar();

pero si le ponemos
sentencias;
..;
..;
fflush(stdin);
c=getchar();
toma el caracter sin ningun problema.

la pregunta es... cuando utilizar esa funcion??? porque en un programa la incluyo a cada rato y no quiero que se me vuelva un vicio!!, la antepongo siempre ante una toma de caracter o palabra, esta bien?
como funciona exactamente?

muchas gracias. espero sus respuestas!!

Eternal Idol:
Nunca hay que usar fflush con stdin, su comportamiento es indefinido por el standard.

Es mejor que uses fgets y sscanf.

kingsizen:
mmm.. sigo sin entender...
como hago para limpiar el buffer? para que sirve limpiar el buffer? cuando tengo que hacerlo?..
espero su respuesta. muchas gracias!

Eternal Idol:
GIYF.

kingsizen:
amigos, no me quedo muy claro esto, por lo tanto voy con un ejemplo:

en este ejercicio en la carga  de datos, se saltean algunos gets.. es ahi cuando debo limpiar el buffer??. espero sus respuestas.. muchas gracias!


--- Código: C --- # include <stdio.h># include <string.h># define sub 50 struct productos{       char codigo[5];       char modelo[10];       char descripcion[200];       float precio;       char codprov[10];       char nomprov[30];}; void carga (struct productos [],int *); main(){           struct productos prod[sub];      int cant_prod;      cant_prod=0;            carga (prod,&cant_prod);} void carga (struct productos p[],int *cant ){     int i=*cant;     char r;     do     {                     printf ("Ingrese Codigon");         scanf ("%s",&p[i].codigo);         [color=#BF0000]//fflush (stdin)????????????????????;[/color]         printf ("Ingrese Modelon");         gets(p[i].modelo);         printf ("Ingrese Descripcionn");         gets(p[i].descripcion);         printf ("Ingrese Precion");         scanf ("%f",&p[i].precio);                 printf ("Ingrese Cod proveedorn");         scanf("%s",p[i].codprov);                           printf ("Ingrese Nombre proveedorn");         gets(p[i].nomprov);         i++;         printf ("Seguir ingresando datos?n");         scanf ("%c",&r);         }while (r !='n');     *cant=i;}  

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa