2012-01-17 20 views
5

Tengo algunas dificultades para encontrar información de la comparación de cadenas de caracteres C. Entiendo que a diferencia de C++, C no admite la sobrecarga del operador, por lo que me pregunto si hay alguna manera de verificar si una cadena es mayor/menor que otra (por ejemplo, str1> str2).Operadores de comparación para cadenas de C

Gracias de antemano por sus respuestas. Honestamente, esta fue una de las primeras veces que tuve que hacer una pregunta porque no pude encontrar una publicación relacionada.

Respuesta

14

Existen varias, cada una con diferentes propósitos (omitiendo las variantes de caracteres anchos por ahora).

strcmp - compara dos cadenas, carácter por carácter (con la noción C de qué cadenas son iguales o no, eso no tiene por qué coincidir con cómo piensan los humanos - ver strcoll). Hay una variante para comparar solo los primeros como máximo n caracteres, strncmp.

strcasecmp - compara dos cadenas, haciendo caso omiso de la caja. Hay una variante para comparar solo los primeros como máximo n caracteres, strncasecmp.

strcoll - compara dos cadenas, observando la configuración regional actualmente configurada (razón por la cual se llama intercalación, no comparando en este caso). Si quiere ss y ß para comparar igual para un público alemán, entonces esto es lo que debe usar.


donde se puede escribir

if (string1 > string2) ... 

en un idioma, usted tiene que escribir

if (strmp(string1, string2) > 0) ... 

en C. En esencia se mueve ambos operandos en la llamada de función, retener el operador de comparación y en su lugar, compare con 0.

2

Uso strcmp() en C.

por ejemplo, si se desea comparar dos cadenas de caracteres s1 y s2, entonces,

strcmp (S1, S2) devolverá 0 si son iguales, número entero positivo si s1 es mayor que s2 y entero negativo si s1 es menor que s2.

Cuestiones relacionadas