Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: NarKo en 22 de Agosto de 2006, 02:57:07
Título: sentencia IF con un string
Publicado por: NarKo en 22 de Agosto de 2006, 02:57:07
hola amigos estado avanzando con el manual de C y ahora me a surjido un problema y me preguntava si seria posible hacer que un IF trabaje con un string.
ejemplo:
C="i==1"; if(C){ printf("SI ES IGUAL A UNO"); }ELSE{ printf("NO LO ES"); }
SALUDOS Y GRACIAS..
Título: Re: sentencia IF con un string
Publicado por: Nocturno en 22 de Agosto de 2006, 04:06:46
Tal y como está construido eso, ni te funcionará en C para PIC, ni en C para PC.
Ahí literalmente estás diciendo que si la variable C es distinta de 0 ejecute el primer printf y si no el segundo. La variable C tiene un valor distinto de 0, por lo que siempre se ejecutará el primero.
Título: Re: sentencia IF con un string
Publicado por: NarKo en 22 de Agosto de 2006, 09:52:46
gracias nocturno, y en el caso que necesite que ayan muchas if no ay forma de hacerlo eficiente y no tener que escribir cada una de las if??
saludos....
Título: Re: sentencia IF con un string
Publicado por: Nocturno en 22 de Agosto de 2006, 10:44:07
Título: Re: sentencia IF con un string
Publicado por: djpalas en 22 de Agosto de 2006, 11:50:45
Buenas Narko!!
Para que el IF trabaje con strings en el interior de la condición del IF puede ir por ejemplo una comparación de strings.
Código: C++
cadena1 ="pepe";// Asignamos las cadenas
cadena2 ="manolo";//
if(cadena1==cadena2)
printf("Las cadenas son iguales");
else
printf("Son distintas");
En el ejemplo siempre se ejecutará la sentencia del "else" puesto que el resultado booleano de la comparación es FALSE.
Respecto al ejemplo del control de flujo switch que ha colocado manolo, está perfectamente, pero me gustaría añadir que solo puedes utilizarlo con datos tipo enteros ó tipo carácter.
Título: Re: sentencia IF con un string
Publicado por: jfh900 en 25 de Agosto de 2006, 21:57:07
Dipalas eso tampoco funcionara, para comparar cadenas hay que utilizar una función del tipo:
SIGNED INT STRCMP (char *s1, char *s2) Compara s1 y s2; devuelve -1 si s1<s2, 0 si s1=s2, 1 si s1>s2.
SIGNED INT STRNCMP (char *s1, char *s2, int n) Compara un máximo de n caracteres (que no vayan seguidos de 0) de s1 a s2; devuelve -1 si s1<s2, 0 si s1=s2, y 1 si s1>s2.
SIGNED INT STRICMP (char *s1, char *s2) Compara s1 y s2 sin hacer distinción entre mayúsculas y minúsculas. Devuelve -1 si s1<s2, 0 si s1=s2, y 1 si s1>s2.
Donde s1 y s2 son cadenas. El compilador de "C" solo pude comparar caracteres aislados, esto sí se podria hacer:
if ('a'=='b') => devuelve falso
if ('a'=='a') => devuelve cierto
Un saludo
Título: Re: sentencia IF con un string
Publicado por: djpalas en 26 de Agosto de 2006, 17:20:36
Muchas gracias Jesús!
Por la aclaración del tratamiento de las cadenas de caracteres, como diría "Kintaro Oe" ( Protagonista de la serie anime GoldenBoy) Aprendo, aprendo, aprendo ..... ;)
PD: Os aconsejo que le echéis un vistazo si os queréis reír, es un humor un poco subido de tono, pero la verdad que te partes de la risa ;) Os dejo unos enlaces de www.youtube.com, donde se encuentra algunos episodios en ingles (El 1º Sobre Programación) Parte 1: Parte 2: Parte 3: Lo vende en DVD en Español, por si os ha gustado ;)
Título: Re: sentencia IF con un string
Publicado por: NarKo en 29 de Agosto de 2006, 02:53:13
muchas gracias como siempre me fueron de mucha ayuda, ay cada vez avanso mas en mi proyecto.