elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  funcion scanf ayuda!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: funcion scanf ayuda!  (Leído 6,050 veces)
Fer995

Desconectado Desconectado

Mensajes: 17


Ver Perfil
funcion scanf ayuda!
« en: 27 Octubre 2010, 01:47 am »

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:

Código:
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!


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: funcion scanf ayuda!
« Respuesta #1 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!


En línea

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

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: funcion scanf ayuda!
« Respuesta #2 en: 27 Octubre 2010, 13:50 pm »

¡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 Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: funcion scanf ayuda!
« Respuesta #3 en: 27 Octubre 2010, 16:44 pm »

Otra cosa, a scanf se pasa un puntero a la variable.
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: funcion scanf ayuda!
« Respuesta #4 en: 27 Octubre 2010, 16:57 pm »

¡Buenas!

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

prueba el siguiente bucle:
Código
  1. do{
  2.  
  3.    printf("Introduce un numero (cero para salir): ");
  4.  
  5.    scanf("%d",&opcion);
  6.  
  7. }while(opcion!=0);
  8.  

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 Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: funcion scanf ayuda!
« Respuesta #5 en: 29 Octubre 2010, 21:52 pm »

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 Desconectado

Mensajes: 17


Ver Perfil
Re: funcion scanf ayuda!
« Respuesta #6 en: 30 Octubre 2010, 02:31 am »

gracias por vuestras respuestas son de utilidad!

moderadores cerrar el post!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado] ¿La funcion scanf() permite escribir?
Programación C/C++
criskapunk 9 7,033 Último mensaje 29 Junio 2011, 02:59 am
por criskapunk
bucle, se come el primer scanf
Programación C/C++
Neibar 4 3,218 Último mensaje 14 Junio 2012, 23:32 pm
por Neibar
Duda con scanf
Programación C/C++
Caster 3 4,221 Último mensaje 29 Septiembre 2012, 13:01 pm
por Caster
Ayuda con el scanf n el for
Programación C/C++
Jorge LuissxX 2 1,670 Último mensaje 18 Mayo 2019, 02:07 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines