funcion scanf ayuda!

Iniciado por Fer995, 27 Octubre 2010, 01:47 AM

0 Miembros y 1 Visitante están viendo este tema.

Fer995

Hola a todos!

es mi primer mensaje en este foro!

estoy haciendo todas las semanas unas practicas en la universidad.. en las practicas suelo utilizar la funcion scanf para leer datos.

el problema es que no me dejan utilizar fflsuh y entonces tengo que estar metiendo \n en los scanf de la siguiente manera:


scanf("\n%d",numero);


la pregunta es que no entiendo que pasa cuando le metes /n al scanf y porque a veces da = meterlo o no y otras si es necesario!! gracias!

do-while

¡Buenas!

El porblema con scanf, es que si quieres leer un dato, para realizar la lectura tienes que pulsar intro, y es entonces cuando la funcion lee datos. Lo que pasa es que cuando tu pulsas intro estas introduciendo un '\n' en stdin, y ese '\n', scanf no lo lee, se queda en stdin, asi que cuando realizas la siguiente lectura, tienes un caracter "inesperado" que te estorba para hacer segun que cosas.

utiliza fgets+sscanf. En las chinchetas tienes un post sobre que es lo que no hay que hacer en C. Echale un ojo y encontraras datos utiles.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Fer995

Cita de: do-while en 27 Octubre 2010, 03:00 AM
¡Buenas!

El porblema con scanf, es que si quieres leer un dato, para realizar la lectura tienes que pulsar intro, y es entonces cuando la funcion lee datos. Lo que pasa es que cuando tu pulsas intro estas introduciendo un '\n' en stdin, y ese '\n', scanf no lo lee, se queda en stdin, asi que cuando realizas la siguiente lectura, tienes un caracter "inesperado" que te estorba para hacer segun que cosas.

utiliza fgets+sscanf. En las chinchetas tienes un post sobre que es lo que no hay que hacer en C. Echale un ojo y encontraras datos utiles.

¡Saludos!

entonces a ver si he entendido bien.

si yo introdujera un dato y pulso enter un scanf normal me lo debe leer correctmente

pero a la hora de querer leer un dato nuevo en otra linea ahi si debo poner \n para que lo lea correctamente no es asi? gracias!

[L]ord [R]NA

Otra cosa, a scanf se pasa un puntero a la variable.

do-while

¡Buenas!

scanf no tiene porque leer bien los datos que le pides.

prueba el siguiente bucle:

do{

    printf("Introduce un numero (cero para salir): ");

    scanf("%d",&opcion);

}while(opcion!=0);


Ahora escribe "hola" o cualquier cadena. El bucle se "volvera loco". Aqui encontraras informacion sobre scanf. Aprobecha que devuelve el numero de parametros leidos para saber si se ha podido leer lo que quieres. Y si no lo consigues, sabiendo que el input termina con '\n', lee caracteres (getchar()) hasta que encuentres dicho caracter para vaciar el bufer de entrada. Si consiguieses leer los datos correctamente, tambien tendiras que usar por ejemplo getchar() para sacar de stdin el caracter '\n' que queda...

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Oblivi0n

Cuando introduces "\n" lo que haces es indicarle que haga una nueva linea, osea, que lea la linea 1 y salte a la 2.

Otas opciones similares son "\a" (alert, suena un pitido) "\t" (tabulador) , etc etc, si buscas por internet encontraras tablas con todas

Fer995

gracias por vuestras respuestas son de utilidad!

moderadores cerrar el post!