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

 

 


Tema destacado: Estamos en la red social de Mastodon


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problemas con scanf() en C
« en: 19 Febrero 2017, 19:13 pm »

Hola. Tengo un problema, estoy realizando una pequeña practica para la escuela, y necesito que se repita un programa cuando el ususario responda S o N a la pregunta "¿Quieres hacer otra conversión?". El problema es que cuando compilo (Uso CodeBlocks) tengo que poner dos veces el scanf(), de otro modo el programa finaliza y no me deja escanear el valor de la respuesta (S/N).
Aquí está mi codigo:

Código
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. float m;
  5. char d;
  6. main(){
  7. printf("Escribe tu valor en metros: ");
  8. scanf("%f",&m);
  9. printf("Este es tu valor en pies: %f\n",m*3.28084);
  10. printf("\n¿Quieres hacer otra conversion?(S/N): ");
  11. scanf("%c",&d);
  12. scanf("%c",&d);
  13. if (d=='S'){
  14.        system("cls");
  15.    return main();
  16. }
  17.        else {
  18.            return 0;
  19.    }
  20.    }
  21.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 19 Febrero 2017, 19:14 pm por engel lex » En línea

KINGARZA

Desconectado Desconectado

Mensajes: 33

Facebook: Luis Garza


Ver Perfil
Re: Problemas con scanf() en C
« Respuesta #1 en: 19 Febrero 2017, 20:32 pm »

Solo tienes que limpiar el buffer
Código
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. float m;
  5. char d;
  6.  
  7. main(){
  8.    printf("Escribe tu valor en metros: ");
  9.    scanf("%f",&m);
  10.    printf("Este es tu valor en pies: %f\n", m * 3.28084);
  11.    printf("\n¿Quieres hacer otra conversion?(S/N): ");
  12.    fflush(stdin);
  13.    scanf("%c", &d);
  14.    if(d == 'S' || d == 's'){
  15.        system("cls");
  16.        return main();
  17.    }
  18.    return 0;
  19. }
  20.  
Te dejo este link para que lo entiendas: http://www.carlospes.com/curso_de_lenguaje_c/01_11_la_funcion_fflush.php


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problemas con scanf() en C
« Respuesta #2 en: 19 Febrero 2017, 20:36 pm »

Lo que no hay que hacer en C/C++

Citar
2) fflush(stdin);

fflush(stdin) es un invitado casi diario. Pocas veces pasa un dia sin que alguien lo recomiende o lo mencione como la solucion! a los malos comportamientos de las pausas en los programas.

STDIN, como su nombre lo indica, significa 'Standard input'. Es decir, el ingreso por teclado.

Acorde al Standard, fflush espera solamente un stream de salida (STDOUT: 'Standard Output) por lo que el comportamiento con streams de entrada como STDIN es indefinido. Por mas que en algunas plataformas funcione, o que en algunos compiladores funcione, no deberia ser utilizado.

Por el otro lado, para evitar esas pausas fastidiosas es necesario evitar las funciones que dejan basura por doquier (como scanf();) y utilizar funciones como la ya mencionada fgets();
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con scanf
Programación C/C++
Caster 3 3,985 Último mensaje 29 Septiembre 2012, 13:01 pm
por Caster
Pregunta de C scanf
Programación C/C++
g0rg3d3l4s3lv4 3 2,504 Último mensaje 15 Marzo 2013, 04:21 am
por g0rg3d3l4s3lv4
scanf y gets « 1 2 »
Programación C/C++
m@o_614 16 7,800 Último mensaje 21 Julio 2013, 19:29 pm
por rir3760
Ayuda con el scanf n el for
Programación C/C++
Jorge LuissxX 2 1,470 Último mensaje 18 Mayo 2019, 02:07 am
por K-YreX
scanf C - borland
Programación C/C++
Carlosj1 2 1,824 Último mensaje 24 Julio 2019, 20:26 pm
por Carlosj1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines