C/Visual C - Comparar cadenas

 
Vista:

Comparar cadenas

Publicado por Guillermo (6 intervenciones) el 04/02/2004 05:03:06
necesito hacer una funcion que reciba un array con una cadena y compararlo con una lista y decir si esa cadena esta o no en esa lista (en una estructura con punteros y todo eso), y uso este codigo:

char comando[20] = "Palabra" ( un ejemplo )
while (AUX!=NULL && AUX->nombre != comando)
{
AUX= AUX->sig;
}

if (AUX->nombre == comando)
verifica = si;
else
verifica = no;
printf ("Es comando: %d ",verifica);
getch();

pero el array contiene esto: Palabra\0\0\0\0\0......... y asi hasta el final por lo que nunca va a ser igual al puntero (AUX->nombre). si alguien sabe alguna solucion avisen.Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comparar cadenas

Publicado por chuidiang (677 intervenciones) el 04/02/2004 08:59:23
Los /0 del final no son problema. La cadena se considera que se termian cuando llega al primer /0. Es decir, C a todos los efectos considera que comando conetiene "Palabra".

En cuanto a comparar cadenas, si haces

AUX->nombre == comando

estas comparando los punteros que apuntan a las cadenas. Es decir, la direccion de memoria de comando con la direccion de memoria de AUX-nombre. Aunque contengan las mismas cadenas, si estan en memoria guardadas en sitios distintos, te dara distinto.

La forma de comparar los caracteres de dos cadenas es con la función strcmp(). En tu caso algo como esto

if (strcmp (AUX->nombre, comando) == 0)
{
// son iguales.
}

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar