C/Visual C - Necesito ayuda.

 
Vista:
sin imagen de perfil

Necesito ayuda.

Publicado por Raul (5 intervenciones) el 18/05/2002 11:59:48
grabo informacion en un fichero binario con una estructura.Ahora solicito un nombre a traves de teclado y leo en el fichero la estructura (datos.nombre),intento comparar la informacion de teclado con la del fichero.
if (datos.nombre==nombre){
lo que sea
}
pero no entra en esta condicion siendo ambas iguales(datos.nombre=pepe y nombre=pepe).
nombre esta definido como char[20] y datos.nombre en la estructura esta igual.
a que se puede deber???
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

Yo no se mucho pero...

Publicado por barras (1 intervención) el 18/05/2002 12:11:23
a mi char[20] no me suena para nada. Creo que char solo se usa para 1 caracter. Si kieres usar en una misma variable mas de 1 caracter creo q tendras que utilizar un string (esto en C++, no se si en C será igual)
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

RE:Necesito ayuda.

Publicado por chuidiang (677 intervenciones) el 19/05/2002 06:26:27
datos.nombre y nombre en realidad son punteros. con datos.nombre==nombre estás comparando los punteros, que da igual el contenido, no son iguales.
Para comparar cadenas de caracteres debes usar la función strcmp()

strcmp (datos.nombre, nombre) == 0 para ver si 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

RE:Necesito ayuda.

Publicado por Alexis Leung Cheung (70 intervenciones) el 19/05/2002 20:37:59
No te preocupes que esto le pasa a muchos. El C tiene la particularidad que no se puede comparar de esta forma, porque son punteros y están refereciando a una dirección de memoria. Tienes que comparar usando la función strcmp(cadena1,cadena2). Si devuelve 0 entonces significa que es igual.

Así:

if (!strcmp(datos.nombre,nombre))
{
...... /* código del programa */
}
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