Programación General > C/C++
fflush (stdin) , flusshal. cuando usarlos? como funcionan?
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
[#] Página Siguiente
Ir a la versión completa