[ Foro de C ]

Problemas de buffer

02-Aug-2014 23:30
Invitado (MiJiC)
1 Respuestas

Hola, antes de nada daros las gracias por todo el trabajo que hacéis.

Hace poco que he empezado el tutorial de C, he llegado al ejercicio que pide ingresar cuatro letras y devolverlas en orden inverso para formar la palabra "hola". Una vez compilado el programa tenía el siguiente problema:

Al introducir la primera letra, se saltaba el siguiente renglón, me pedía otra letra y finalizaba directamente. Buscando en el foro ya he visto que parece ser que al programar en C, el buffer es responsable de este "fallo" y que incluyendo "getchar();" después de cada "scanf()" se soluciona.

Mi dudas son:
¿Por qué hasta ahora no he tenido ese problema con el buffer?. Cuando he hecho ejercicios similares en los que me iba metiendo números uno a uno no pasaba esto, solo al utilizar variables "char".

Si con "getchar()" se soluciona, ¿es mejor utilizarlo siempre, después de cada "scanf()" o hay alguna manera de saber, sin tener que llegar al fallo, de que el buffer dará ese problema?

Muchas gracias.


03-Aug-2014 03:18
Luis Torres (+12)

Sí, tienes que utilizarlo siempre. El efecto indeseable se produce cuando, después de una lectura de datos, quedan caracteres en el buffer de entrada, y éstos son recogidos por la siguiente instrucción de lectura. Así, que tendrás que usarlo cada vez que observes el problema.
Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)