Páginas: [1]
|
 |
|
Autor
|
Tema: ¿Se puede hacer switch a una cadena de caracteres? (Leído 268 veces)
|
Carloswaldo
Wiki
Desconectado
Mensajes: 2.507
Lo que haría sería hacerme pasar por sordomudo...
|
Eso, me surgio esa duda ahora que estoy retomando el estudio de C (debido a la universidad) pero cuando intento hacer un switch a una cadena de caracteres, por ejemplo: char bolita[8]; ... scanf("%c",&bolita); switch(bolita) { case "blanco": hacer_algo(); break; } Pero me da un error de compilación: Switch selection epresionje must be of integral type Buscando dí con que no se puede hacer switch a una cadena de caracteres de esa forma, ¿hay alguna otra forma? ¿o irremediablemente tengo que usar if...? Gracias.  EDIT: Que raro yo quiero poner "e x p r e s s i o n" y me lo censura por "epresionje". 
|
|
|
|
« Última modificación: 02 Junio 2008, 00:41 por Carloswaldo »
|
En línea
|
|
|
|
|
|
cΔssiΔnі
Desconectado
Mensajes: 492
|
Por lo que he leido "no se pueden evaluar cadenas en un switch, solo valores enteros", yo nunca he podido hacerlo así directamente, lo que hacia era relacionar la cadena con un caracter --> blanco = B Un ejemplo: printf("Algoritmo y programacion 'ARCHIVOS SECUENCIALES'...\n\n"); printf(" a. Agregar\n\n"); printf(" b. Modificar\n\n"); printf(" c. Eliminar\n\n"); printf(" d. Mostrar Registros\n\n"); printf(" x. Salir del programa"); sel=getche(); switch(sel) { case 'a': agregar();break; case 'b': modificar();break; case 'c': eliminar();break; case 'd': mostrar();break; case 'x': SALIR=0;break; //esta variable es para salir del ciclo, ¿que ciclo? no lo coloque default:printf("Opcion incorrecta"); }Si no haste alguna función o usa simplemente strcmp if (strcmp(a,c)) printf("Son diferentes\n"); else printf("Son iguales\n");
|
|
|
|
« Última modificación: 02 Junio 2008, 02:14 por cΔssiΔnі »
|
En línea
|
|
|
|
BEATMASTER
Desconectado
Mensajes: 27
|
asi como tal no.. para lo que queires seria mejor usar como dicen un strcmp() con ifs
|
|
|
|
|
En línea
|
|
|
|
^TiFa^
Desconectado
Mensajes: 667
Need a Love Loan? Borrow some from me :)
|
Tu puedes evaluar con switch a 1 caracter o 1 entero pero No a una cadena de caracteres... Logicamente es un poco imposible a una cadenas de caracteres si lo piensas. Ahora en tu ejemplo, esta mal alguito char bolita[8]; // Le indicaste una longitud a bolita, por ende ya bolita es una cadena de caracteres ... scanf("%c",&bolita); // No puedes usar '%c' en bolita, porke bolita es una cadena de caracteres con una longitud de 8 caracteres maximo, en este caso deberias usar '%s' y no '%c' ya que '%c' solo recoge 1 caracter No varios, para declarar una variable char de 1 solo caracter no puedes indicarle una longitud.
switch(bolita) // Pudieras swichear a bolita si fuera una variable de 1 solo caracter, pero este no es el caso, quieres evaluar cadenas completas de caracter no 1 solo caracter. { case "blanco": hacer_algo(); break; }
|
|
|
|
|
En línea
|
http://chixmes.blogspot.com/Si quieres saber el valor del dinero, trata de conseguirlo prestado. El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz. - Benjamin Franklin. 
|
|
|
Carloswaldo
Wiki
Desconectado
Mensajes: 2.507
Lo que haría sería hacerme pasar por sordomudo...
|
Gracias ^TiFa^, lo del %s se me fue al tipear, en el prg lo tenía bien.  Gracias por sus respuestas, veo que no se puede gracias. 
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|