Páginas: 1 [2]
|
 |
|
Autor
|
Tema: Problema con If - Else if - Else (Leído 603 veces)
|
Cab Calloway
Colaborador
Desconectado
Mensajes: 4.295
|
strcmp: Localiza la primera aparición en la cadena apuntada por s1 de la secuencia de caracteres (excluyendo el carácter nulo) en la cadena apuntada por s2. La función retorna un puntero a la cadena encontrada, o un puntero nulo si no se encontró la cadena. Si s2 apunta a una cadena de longitud cero, la función retorna s1.
Mentira mentira mentira mentira cochina. Mentiroso. Pinocho. strcmp devuelve un dato de tipo int, no un puntero. Devuelve cero si dos cadenas son iguales, si la primera cadena es menor, en orden alfabético según su número ASCII, devuelve un número negativo, sino uno positivo. Te odio, mentiroso.
|
|
|
|
|
En línea
|
Max 400; caracteres restantes: 366
|
|
|
Cab Calloway
Colaborador
Desconectado
Mensajes: 4.295
|
PD: La verdad se funcionaliza en strstr().
|
|
|
|
|
En línea
|
Max 400; caracteres restantes: 366
|
|
|
Freeze.
Desconectado
Mensajes: 2.463
FireSoft
|
strcmp: Localiza la primera aparición en la cadena apuntada por s1 de la secuencia de caracteres (excluyendo el carácter nulo) en la cadena apuntada por s2. La función retorna un puntero a la cadena encontrada, o un puntero nulo si no se encontró la cadena. Si s2 apunta a una cadena de longitud cero, la función retorna s1.
Mentira mentira mentira mentira cochina. Mentiroso. Pinocho. strcmp devuelve un dato de tipo int, no un puntero. Devuelve cero si dos cadenas son iguales, si la primera cadena es menor, en orden alfabético según su número ASCII, devuelve un número negativo, sino uno positivo. Te odio, mentiroso. Eso es lo que he aprendido del gran cconclase que la mayoria idrolatra  PD: tambien he usado strstr() y ha dado los mismos resultados. Osea que siempre me dice que el buffer es igual en los 3  algo estupido com: a = 1 b = 2 c = 3 Y a,b,c son iguales 
|
|
|
|
|
En línea
|
Un nuevo CMS, pruebalo:

|
|
|
Cab Calloway
Colaborador
Desconectado
Mensajes: 4.295
|
Yo lo haría así. int main(){ char cadena[]="Hola|Freeze"; char cadenaaux[20]; if(strstr(cadena,"|")){ strncpy(cadenaaux,strstr(cadena,"|")+1,strlen(cadena)-strcspn(cadena,"|")); //Comprobaciones que quieras, if else lo que quieras //... //... } }Ahí te copia en una cadena auxiliar la cadena con la que vas a trabajar. Aunque podrías hacerlo sin necesidad de copiarla y tener otra variable, pero bueno...
|
|
|
|
« Última modificación: 01 Junio 2008, 00:34 por Kasswed »
|
En línea
|
Max 400; caracteres restantes: 366
|
|
|
SnakeDrak
Desconectado
Mensajes: 13
|
Hola, Antes de nada decirte que esto es para ayudarte y no para echarte en cara nada xD. Cito a conclase: strcmp: La función retorna un número entero mayor, igual, o menor que cero, apropiadamente según la cadena apuntada por s1 es mayor, igual, o menor que la cadena apuntada por s2.
Es imposible que strcmp haga lo mismo que strstr, strstr es si encuentra en la cadena una determinada palabra, strcmp es si la palabra es idéntica y strcmpi es si la palabra es idéntica pero no distingue mayúsculas de minúsculas. (stristr también existe pero tienes que buscarla por internet creo) También te recomiendo que no hagas cosas como esta: if(strcmp(Buffer,"Ocultar")) { if(strcmp(Buffer,"Boton")) { ocultar(1) } } Sino así (cambiando ya a strstr que supongo que es lo que querías: if(strstr(Buffer,"Ocultar")!=0 && strstr(Buffer,"Boton")!=0) ocultar(1);
Seguro que querías hacer eso ya que para comparar en la función strcmp es: if(strcmp("Encontrar string",en_esta_variable_o_cadena)==0) Si encuentra "Encontrar string" en la variable "en_esta_variable_o_cadena" entraría al IF, sino no. Otra cosa, cuando solo vayas a ejecutar 1 comando dentro de 1 if, else, while, for o similares, no hace falta que abras las llaves, en el ejemplo anterior ocultar se ejecutaría pero lo que le continua ya estaría fuera del if. Saludos.
|
|
|
|
|
En línea
|
|
|
|
Freeze.
Desconectado
Mensajes: 2.463
FireSoft
|
A mi me gusta abrir llaves me pierdo menos  Es imposible que strcmp haga lo mismo que strstr No es que haga lo mismo, sino que me da el mismo resultado  Poco a poco le veo el queso a la tostada pero nada. Tengo esto  if(strstr(Buffer,"|")){ strncpy(sBuffer,strstr(Buffer,"|")+1,11); if (sBuffer == "BotonInicio") { ocultar(1); } if (sBuffer == "BarraTareas" && i>1) { ocultar(2); } if (sBuffer == "HoraeIconos" && i>1) { ocultar(3); } }
|
|
|
|
|
En línea
|
Un nuevo CMS, pruebalo:

|
|
|
|
|
cΔssiΔnі
Desconectado
Mensajes: 548
|
Deberías ayudarte con los "ELSE" para evitar hacer comparaciones innecesarias.
suerte en lo que haces!!!
|
|
|
|
|
En línea
|
|
|
|
Rozor
Desconectado
Mensajes: 251
As I Walk Through The Valley Of The Shadow Of Dead
|
strchr(var, 'R');
|
|
|
|
|
En línea
|
Suck my Dick!!!
|
|
|
Freeze.
Desconectado
Mensajes: 2.463
FireSoft
|
Deberías ayudarte con los "ELSE" para evitar hacer comparaciones innecesarias. suerte en lo que haces!!!
char sBuffer[11]; if(strstr(Buffer,"|")){ strcpy(sBuffer,strstr(Buffer,"|")+1); printf("%s",sBuffer); if (strstr(sBuffer,"BotonInicio")) ocultar(1); else if (strstr(sBuffer,"BarraTareas") && i>1) ocultar(2); else if (strstr(sBuffer,"HoraeIconos") && i>1) ocultar(3); } Si se me habia olvidado 
|
|
|
|
|
En línea
|
Un nuevo CMS, pruebalo:

|
|
|
|
Páginas: 1 [2]
|
|
|
|