Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/12/2009, 11:54
Avatar de calathea
calathea
 
Fecha de Ingreso: octubre-2008
Ubicación: Valladolid
Mensajes: 122
Antigüedad: 16 años, 5 meses
Puntos: 3
Comparaciones tipo char

Hola a todos!

Estoy teniendo algunas dificultades a la hora de realizar unas comparaciones con variables de tipo char.

Resulta que tengo una variable declarada de la siguiente forma:

char entrada[100];

En esta variable voy a almacenar unos datos recogidos por teclado. En principio yo no se qué voy a recoger, si un solo caracter, una cadena de caracteres, un número...Esto podría hacerlo declarando varias variables y almacenandolo en variables distintas después de comprobar el tipo de datos que voy a introducir...pero creo que el código me quedaría peor y mas extenso

Me explico: Esta variable la utilizo en un TAD en el que almaceno los datos de una pregunta: ID, texto, tipo de datos de un personaje a los que afecta y respuesta esperada.

Si el tipo de datos a los que afecta es al sexo del personaje, entonces la respuesta esperada será un caracter, igual que si afecta al estado civil; si afecta a la nacionalidad, será una cadena de caracteres...etc

Por esto, la respusta esperada la almaceno en entrada y luego hago las comparaciones pertinentes para ver si es una respuesta válida. El problema viene aqui:

Si, por ejemplo, estoy con una pregunta que afecte al sexo, al comparar la entrada con los caracteres "f", "F", "m" y "M" no me realiza bien la comparación.
¿Alguien podría decirme cómo hacerlo? Gracias d antemano. Os pongo el código que tengo:

Código c:
Ver original
  1. printf("\n\tRespuesta esperada <pulse RETURN para ver la ayuda>: ");
  2.     fflush(stdin);
  3.     gets(entrada);
  4.  
  5.     if(entrada[0]==0)
  6.     {
  7.         printf("\n");
  8.         respuesta();  //función que abre un archivo de texto con la ayuda
  9.         printf("\nEscriba la respuesta esperada: ");
  10.         gets(entrada);
  11.     }
  12.  
  13.         strcpy(pregunta->respuesta, entrada);
  14.  
  15.         if(pregunta->afecta == 2) //el codigo 2 es el del sexo
  16.         {
  17.             do
  18.             {
  19.                 if(entrada == 'f' || entrada == 'F')
  20.                 {
  21.                     strcpy(pregunta->respuesta, (char)12);  //simbolo sexo femenino
  22.                     cont++;
  23.                 }  //a pesar de que en el debugger se ve que entrada adopta el valor 'f' (por ej), no entra en el if
  24.                 if(entrada == 'm' || entrada == 'M')
  25.                 {
  26.                     strcpy(pregunta->respuesta, (char)11);  //símbolo sexo masculino
  27.                     cont++;
  28.                 }
  29.                 //si no se ha seleccionada F, f, M o m
  30.                 if(cont == 0) //al no entrar en los if, el contador no aumenta y entramos aqui: respuesta esperada erronea...
  31.                 {
  32.                     printf("\nLa respuesta esperada es erronea, introduzcala de nuevo: ");
  33.                     gets(entrada);
  34.                     fflush(stdin);
  35.                 }
  36.             }while(cont==0);
  37.         }

Con strcmp también me da error

Última edición por calathea; 08/12/2009 a las 12:00 Razón: me sobraba un else en el codigo...