Martes 12 de Noviembre de 2024, 21:31
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
fflush (stdin) , flusshal. cuando usarlos? como funcionan?
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: fflush (stdin) , flusshal. cuando usarlos? como funcionan? (Leído 11872 veces)
kingsizen
Miembro activo
Mensajes: 41
fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
en:
Viernes 24 de Abril de 2009, 07:11 »
0
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!!
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #1 en:
Viernes 24 de Abril de 2009, 08:05 »
0
Nunca hay que usar fflush con stdin, su comportamiento es indefinido por el standard.
Es mejor que uses fgets y sscanf.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
kingsizen
Miembro activo
Mensajes: 41
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #2 en:
Viernes 24 de Abril de 2009, 20:54 »
0
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
Moderador
Mensajes: 4696
Nacionalidad:
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #3 en:
Viernes 24 de Abril de 2009, 21:27 »
0
GIYF
.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
kingsizen
Miembro activo
Mensajes: 41
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #4 en:
Lunes 27 de Abril de 2009, 21:46 »
0
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
;
}
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #5 en:
Lunes 27 de Abril de 2009, 22:55 »
0
No, en lugar de usar scanf y gets, usa fgets (con stdin) y sscanf.
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
betopin
Miembro activo
Mensajes: 93
Nacionalidad:
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #6 en:
Martes 28 de Abril de 2009, 02:06 »
0
Hay dos opciones para que no hayan saltos
1) Limpiar el buffer y luego capturar
Ej:
Código: C
fflush
(
stdin
)
;
gets
(
arreglo
)
;
2) Usar getchar (Que para el caso funciona como un filtro) y capturar
Ej:
Código: C
getchar
(
)
;
scanf
(
"%c"
,&
var
)
;
El problema en ambos casos es el mismo, se queda el caracter 'n' en el buffer en una captura de datos previa y al realizar el intento de una nueva captura tal caracter se libera
Saludos
Programas en C]
kingsizen
Miembro activo
Mensajes: 41
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #7 en:
Martes 28 de Abril de 2009, 04:13 »
0
excelente!! eso queria saber!!... osea ke limpio el buffer tantas veces como "gets" use?
betopin
Miembro activo
Mensajes: 93
Nacionalidad:
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #8 en:
Martes 28 de Abril de 2009, 06:27 »
0
Cita de: "kingsizen"
excelente!! eso queria saber!!... osea ke limpio el buffer tantas veces como "gets" use?
Si o captures caracteres con scanf();
Saludos
Programas en C]
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: fflush (stdin) , flusshal. cuando usarlos? como funcionan?
«
Respuesta #9 en:
Martes 28 de Abril de 2009, 08:02 »
0
NINGUNA DE ESAS OPCIONES ES BUENA, A VER SI LEEN POR FAVOR!
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
fflush (stdin) , flusshal. cuando usarlos? como funcionan?