Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/06/2015, 03:41
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Problema para leer cadena de caracteres en C

Cita:
Iniciado por tote_skyria Ver Mensaje
y luego un switch
Cuando consigas que switch funcione con cadenas de caracteres me avisas.

Lamento darte malas noticias, pero ese código no va a funcionar.

Tienes que sustituir los case por if. No te queda otra:

Código C:
Ver original
  1. if( strcmp( buffer, "pi" ) || strcmp( buffer, "Pi" ) || strcmp( buffer, "PI" ) )
  2. {
  3.   // ...
  4. }
  5. else if ( strcmp( buffer, "t" ) || strcmp( buffer, "T" ) )
  6. {
  7.   // ...
  8. }
  9. // ...

Ahora, que tener que comprobar todas las formas de la palabra es bastante engorroso, como estás comprobando. En este caso puedes solucionarte un poco la vida si realizas una conversión a minúsculas (o mayúsculas, según prefieras):

Código C:
Ver original
  1. char* ptr;
  2. for( ptr = buffer; *ptr; ++ptr){
  3.   *ptr = tolower(*ptr);
  4. }
  5.  
  6. if( strcmp( buffer, "pi" ) ) // Ya no hace falta comprobar Pi ni PI ni pI
  7. {
  8.   // ...
  9. }
  10. else if ( strcmp( buffer, "t" ) )
  11. {
  12.   // ...
  13. }
  14. // ...

Un saludo