elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
28 Agosto 2008, 18:17  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  ¿Se puede hacer switch a una cadena de caracteres?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: ¿Se puede hacer switch a una cadena de caracteres?  (Leído 268 veces)
Carloswaldo
Wiki

Desconectado Desconectado

Mensajes: 2.507


Lo que haría sería hacerme pasar por sordomudo...


Ver Perfil WWW
¿Se puede hacer switch a una cadena de caracteres?
« en: 02 Junio 2008, 00:38 »

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:

Código
char bolita[8];
...
scanf("%c",&bolita);
switch(bolita)
{
case "blanco":
hacer_algo();
break;
}

Pero me da un error de compilación:

Citar
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. :D

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

Aquí en España no nos hablamos, sino que we speak.

Mi página personal:
http://sites.google.com/site/carloswaldo2/
Escucha mis remixes:
http://www.wemix.com/Carloswaldo
Comunidad de idiomas
http://babelruins.tk/
Traducción de textos informáticos
http://foro.elhacker.net/-t218708.0.html
Freeze.

Desconectado Desconectado

Mensajes: 2.391


FireSoft


Ver Perfil WWW
Re: ¿Se puede hacer switch a una cadena de caracteres?
« Respuesta #1 en: 02 Junio 2008, 00:40 »

Pues yo tengo la misma duda pero no he preguntado solo me resigne de tanto buscar y use if :P
En línea

Gana premios:


cΔssiΔnі

Desconectado Desconectado

Mensajes: 492



Ver Perfil
Re: ¿Se puede hacer switch a una cadena de caracteres?
« Respuesta #2 en: 02 Junio 2008, 02:10 »

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:

Código
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
Código
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 Desconectado

Mensajes: 27


Ver Perfil
Re: ¿Se puede hacer switch a una cadena de caracteres?
« Respuesta #3 en: 02 Junio 2008, 02:29 »

asi como tal no.. para lo que queires seria mejor usar como dicen un strcmp() con ifs
En línea
^TiFa^

Desconectado Desconectado

Mensajes: 667


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: ¿Se puede hacer switch a una cadena de caracteres?
« Respuesta #4 en: 02 Junio 2008, 16:33 »

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

Código:
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 Desconectado

Mensajes: 2.507


Lo que haría sería hacerme pasar por sordomudo...


Ver Perfil WWW
Re: ¿Se puede hacer switch a una cadena de caracteres?
« Respuesta #5 en: 02 Junio 2008, 21:01 »

Gracias ^TiFa^, lo del %s se me fue al tipear, en el prg lo tenía bien. :xD

Gracias por sus respuestas, veo que no se puede gracias. :P
En línea

Aquí en España no nos hablamos, sino que we speak.

Mi página personal:
http://sites.google.com/site/carloswaldo2/
Escucha mis remixes:
http://www.wemix.com/Carloswaldo
Comunidad de idiomas
http://babelruins.tk/
Traducción de textos informáticos
http://foro.elhacker.net/-t218708.0.html
Páginas: [1] Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC