C/Visual C - Qué uso para comparar cadenas

 
Vista:

Qué uso para comparar cadenas

Publicado por Javi (5 intervenciones) el 08/04/2004 15:08:59
Hola!
Estoy haciendo una pequeña aplicación que ha de ser perfectamente portable, el problema es que necesito realizar comparación de cadenas de caracteres sin importar las mayúsculas. Normalmente programo en Windows, así que utilicé 'strcmpi'. Al intentar compilarlo en Linux no reconocía esta función, por lo que la cambié por 'strcasecmp', pero ahora esta no puedo usarla en Windows.
¿Qué función debería utilizar para poder compilar el mismo código en ambos sistemas?

Gracias por adelantado.
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:Qué uso para comparar cadenas

Publicado por jonef (3 intervenciones) el 08/04/2004 15:32:11
¿Has probado \" strcmp \"?
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:Qué uso para comparar cadenas

Publicado por Javi (5 intervenciones) el 09/04/2004 12:30:01
Es que la comparación debe ser independiente de las mayúsculas, y 'strcmp' no lo es. Tampoco puedo usar 'upper' (no recuerdo exáctamente si era ese el nombre de la función) para pasar la cadena a mayúsculas antes de la comparación, porque en Linux tampoco existe esa función.

De momento lo he solucionado, pero la verdad es que me parece una forma poco seria y rigurosa de hacerlo, por lo que sigo buscando una solución. He hecho lo siguiente:

#ifndef strcmpi
#define strcmpi strcasecmp
#endif

Esto hace que al usar Linux, sustituya 'strcmpi' (que funciona en Windows) por 'strcasecmp' (que funciona en Linux). Este cambio funciona bien porque el prototipo de las dos funciones es idéntico.

Saludos, espero que podáis ayudarme.
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:Qué uso para comparar cadenas

Publicado por chuidiang (677 intervenciones) el 10/04/2004 11:13:01
En linux tienes las funciones toupper() y tolower() que son ANSI-C. ¿Existen en windows?
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