C/Visual C - error al comparar cadenas de caracteres

 
Vista:

error al comparar cadenas de caracteres

Publicado por Antonio (10 intervenciones) el 14/11/2008 13:20:33
Holaaa, acudo a vosotros porque otras veces me habeis sido de utilidad, tengo un problema al comparar cadenas de caracteres. Haber yo hago:

#define LONG_LINEA 1000

char linea[LONG_LINEA];

fgets(linea, LONG_LINEA, stdin);
aux=strcmp(linea,"Prueba");
if (aux!=0)
hace una cosa
else
hace otra

El problema es que al leer de la entrada estandar no se la longitud previamente de la cadena, por lo que le pongo un tamaño grande por defecto, para que lea todos los caracteres pero al compararlo con Prueba el strcmp siempre devuelve 1, Suponiendo que lee de la entrada estandar "Prueba" porque cuando yo lo comparo con la cadena que en teoría es igual, no devuelve 0. Si alguien me puede dar una pista le estaré muy agradecido, Muchas 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:error al comparar cadenas de caracteres

Publicado por m (8 intervenciones) el 14/11/2008 17:43:03
Comentarios:

Se debe a que la declaras como char[1000]
es decir estas comparando una char de 1000 caracteres aunque
le pongas igual a "Prueba" en realidad pone "Prueba + espacios" hasta
llenar los 1000 caracteres. Lo mejor es que declares a linea como cadena
y listo.

Saludos
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:error al comparar cadenas de caracteres

Publicado por Tom (619 intervenciones) el 17/11/2008 11:47:55
La doc de fgets() dice bien clarito que el carácter newline se transfiere a tu cadena, así que tu "Prueba" que lees de stdin, lleva al final un carácter newline.
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