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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Buffer i saltos de linea en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Buffer i saltos de linea en C  (Leído 501 veces)
proterva

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Buffer i saltos de linea en C
« en: 16 Agosto 2018, 12:32 pm »

Soy novato y no entiendo cuanto un salto de linea se ejecuta y cuando este es guardado como caracter y no se ejecuta.

#include <stdio.h>

main()
{   // programa sin limpiar buffer   
   float precio=0; char car=0;
   printf("precio  ");
   scanf("%g",&precio);
   //ahora al apretar    intro me queda
   //dentro del buffer un salto de linea (\n) y
   //al mismo tiempo se ejecuta un salto de linea   
   printf("pulse entrar para continuar ");
   scanf("%c",&car);
   //ahora al volver apretar intro me queda
   //dentro del buffer dos saltos de linea(\n\n)
   //el segundo salto de linea introducido
   //es leido como un caracter y no es ejecutado
   printf("precio=%g,\n",precio);
   //ahora en el buffer nos queda un salto de linea(\n)
   
   //resultado:
   //precio: (entrar 10 + pulsar intro)
   //pulse entrar para continuar (pulsar intro) precio=10
   
   //////////////////////////////////////////////////////////////
   //programa limpiando buffer
   
   float precio=0; char car=0;
   printf("precio  ");
   scanf("%g",&precio);
   //ahora al apretar    intro me queda
   //dentro del buffer un salto de linea (\n) y
   //al mismo tiempo se ejecuta un salto de linea
   fflush( stdin);
   //ahora el buffer esta vacio
   
   printf("pulse entrar para continuar ");
   scanf("%c",&car);
   //ahora al volver apretar intro me queda
   //dentro del buffer hay un salto de linea(\n)
   //Y este salto de linea deberia ser leido como un
   //caracter y no ser ejecutado
   //en cambio, no se por que si es ejecutado
   //lo que quiere decir que no es leido como caracter.
   //lo que significa que en el buffer nos queda un (\n)
   //Porque??????????????????????????   
   printf("precio=%g,\n",precio);
   
   //resultado
   
   //precio: (entrar 10 + pulsar intro)
   //pulse entrar para continuar (pulsar intro)
   //precio=10
   
}


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.489



Ver Perfil
Re: Buffer i saltos de linea en C
« Respuesta #1 en: 16 Agosto 2018, 14:44 pm »

No te acostumbres a usar fflush(stdin), n ofunciona en todos los compiladores.

En tu primer ejemplo scanf captura solo los números pero se detiene antes del \n.
En el buffer que da \n.
Cuando capturas con scanf el carácter se encuentra con \n y lo saca del buffer, pero como no lo muestras no se ve el salto de línea. scanf ha hecho su trabajo, ha sacado un carácter el buffer así que retorna con éxito, y el programa continua mostrando con el printf.

En tu segundo ejemplo scanf captura solo los números pero se detiene antes del \n.
En el buffer que da \n.
Con fflush(stdin) vacías el buffer de entrada, así que al ejecutar de nuevo scanf para capturar un carácter, éste detendrá el programa para que el usuario llene el buffer.


« Última modificación: 16 Agosto 2018, 14:58 pm por MAFUS » En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
contar saltos de linea RichTextBox VB
Programación Visual Basic
Carlosnuel 5 10,884 Último mensaje 6 Abril 2007, 01:55 am
por CeLaYa
Saltos de linea
PHP
zhynar_X 2 4,511 Último mensaje 8 Septiembre 2007, 17:59 pm
por дٳŦ٭
Script JS o PHP para dar saltos de linea
PHP
H4RR13R 8 3,382 Último mensaje 19 Febrero 2008, 13:21 pm
por H4RR13R
Saltos de linea en PHP.
PHP
Akise 2 1,196 Último mensaje 25 Junio 2013, 03:33 am
por Akise
Ayuda con saltos de línea
Programación Visual Basic
TheH4ck 7 1,807 Último mensaje 13 Marzo 2015, 18:58 pm
por okik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines