Autor
|
Tema: funcion scanf ayuda! (Leído 6,050 veces)
|
Fer995
Desconectado
Mensajes: 17
|
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: 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!
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡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!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Fer995
Desconectado
Mensajes: 17
|
¡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!
|
|
|
En línea
|
|
|
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
Otra cosa, a scanf se pasa un puntero a la variable.
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! scanf no tiene porque leer bien los datos que le pides. prueba el siguiente bucle: do{ printf("Introduce un numero (cero para salir): "); }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!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
Oblivi0n
Desconectado
Mensajes: 392
Odio las ranas.
|
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
|
|
|
En línea
|
|
|
|
Fer995
Desconectado
Mensajes: 17
|
gracias por vuestras respuestas son de utilidad!
moderadores cerrar el post!
|
|
|
En línea
|
|
|
|
|
|