memcmp
|
Definido en el encabezado
<string.h>
|
||
|
int
memcmp
(
const
void
*
lhs,
const
void
*
rhs,
size_t
count
)
;
|
||
Compara los primeros count bytes de los objetos apuntados por lhs y rhs . La comparación se realiza lexicográficamente.
El signo del resultado es el signo de la diferencia entre los valores del primer par de bytes (ambos interpretados como unsigned char ) que difieren en los objetos que se están comparando.
El comportamiento es indefinido si el acceso ocurre más allá del final de cualquiera de los objetos apuntados por lhs y rhs . El comportamiento es indefinido si cualquiera de los punteros lhs o rhs es un puntero nulo.
Contenidos |
Parámetros
| lhs, rhs | - | punteros a los objetos a comparar |
| count | - | número de bytes a examinar |
Valor de retorno
Valor negativo si lhs aparece antes que rhs en orden lexicográfico.
Cero si lhs y rhs son iguales, o si count es cero.
Valor positivo si lhs aparece después de rhs en orden lexicográfico.
Notas
Esta función lee representaciones de objetos , no los valores de los objetos, y típicamente solo tiene sentido para arreglos de bytes: las estructuras pueden tener bytes de relleno cuyos valores son indeterminados, los valores de cualquier byte más allá del último miembro almacenado en una unión son indeterminados, y un tipo puede tener dos o más representaciones para el mismo valor (diferentes codificaciones para + 0 y - 0 o para + 0.0 y – 0.0 , bits de relleno indeterminados dentro del tipo).
Ejemplo
#include <stdio.h> #include <string.h> void demo(const char* lhs, const char* rhs, size_t sz) { for(size_t n = 0; n < sz; ++n) putchar(lhs[n]); int rc = memcmp(lhs, rhs, sz); const char *rel = rc < 0 ? " precedes " : rc > 0 ? " follows " : " compares equal "; fputs(rel, stdout); for(size_t n = 0; n < sz; ++n) putchar(rhs[n]); puts(" in lexicographical order"); } int main(void) { char a1[] = {'a','b','c'}; char a2[sizeof a1] = {'a','b','d'}; demo(a1, a2, sizeof a1); demo(a2, a1, sizeof a1); demo(a1, a1, sizeof a1); }
Salida:
abc precedes abd in lexicographical order abd follows abc in lexicographical order abc compares equal to abc in lexicographical order
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.24.4.1 La función memcmp (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.24.4.1 La función memcmp (p: 266)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.24.4.1 La función memcmp (p: 365)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.21.4.1 La función memcmp (p: 328)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.11.4.1 La función memcmp
Véase también
|
compara dos cadenas
(función) |
|
|
compara una cantidad determinada de caracteres de dos cadenas
(función) |
|
|
Documentación de C++
para
memcmp
|
|