Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problemas scanf, gets

Estas en el tema de problemas scanf, gets en el foro de C/C++ en Foros del Web. Hola, estaba probando este cósigo, que entiendo y veo sencillo... pero hay algo que falla y no entiendo por qué Código: char nombre[40], ape1[20], ape2[20], ...
  #1 (permalink)  
Antiguo 21/03/2011, 02:36
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
problemas scanf, gets

Hola,

estaba probando este cósigo, que entiendo y veo sencillo... pero hay algo que falla y no entiendo por qué

Código:
char nombre[40], ape1[20], ape2[20], sexo;
    int edad;
    printf("Apellidos: ");
    printf("\n");
    scanf("%s %s", &ape1, &ape2);
    printf("Nombre: ");
    printf("\n");
    scanf("%s", nombre);
    printf("Edad: "); 
    scanf("%d", &edad);

//PROBLEMA
    printf("Sexo (H/M): \n");
    //scanf("%c", &sexo);
    sexo = getchar();


    printf("Tu nombre es: %s \n", nombre);
    printf("Tu primer apellido es: %s \n", ape1);
    printf("Tu segundo apellido es: %s \n", ape2);
    printf("Tu edad es: %d \n", edad);
    if(sexo == 'h' || sexo == 'H')
            printf("Eres un hombre \n");
    else if(sexo == 'm' || sexo == 'M')
            printf("Eres una mujer \n");
    else
            printf("Eres un alien \n");

    
    getch();
    return 0;
Cuando quiero pedir el sexo por pantalla salta inmediatamente al printf, y no entiendo por qué pasa de mi scanf o de mi getchar.

Estoy utilizando windows con DevC++

¡Gracias!
  #2 (permalink)  
Antiguo 21/03/2011, 11:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 17
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: problemas scanf, gets

Antes, un consejo: el \n colocalo dentro del printf no tienes que ponerlo después de este y antes del scanf. Además, se guarda dato por dato, no quieras guardar dos cadenas diferentes al mismo tiempo. Otra cosa, si estás usando else no pongas otro if en él que no necesitas. Te sugiero que lo hagas así:

Código C++:
Ver original
  1. char nombre[40], ape1[20], ape2[20], sexo;
  2.     int edad;
  3.     printf("Apellido paterno:\n ");
  4.     scanf("%s", ape1);
  5.     printf("Apellido materno: \n");
  6.   scanf("%s", ape2);
  7.     printf("Nombre:\n ");
  8.     scanf("%s", nombre);
  9.     printf("Edad: ");
  10.     scanf("%d", &edad);
  11.  
  12. //La otra parte
  13.  printf("Sexo (h/m): \n");
  14. fflush(stdin);
  15. sexo=getchar();

Ojalá ya con eso se corrija el programa. Lo digo porque a veces (ya me ha pasado) los programas aparentemente están bien pero el problema es el compilador.

Saludos.

Última edición por Alexis37; 21/03/2011 a las 11:41
  #3 (permalink)  
Antiguo 21/03/2011, 15:24
Avatar de moscoquera  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: problemas scanf, gets

de seguro es la cache de scanf

Etiquetas: gethar, scanf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.