-
Notifications
You must be signed in to change notification settings - Fork 0
strncmp
La función ft_strncmp compara hasta n caracteres de las cadenas s1 y s2. Devuelve un valor menor, igual o mayor que cero si la primera cadena es menor, igual o mayor que la segunda, respectivamente.
STRNCMP(3) (simplified)
NAME
strncmp -- compare strings
SYNOPSIS
int strncmp(const char *s1, const char *s2, size_t n);
DESCRIPTION
The strncmp() function lexicographically compare the null-terminated strings s1 and s2.
The strncmp() function compares not more than n characters. Because strncmp() is designed for comparing strings rather than binary data, characters that appear after a '\0' character are not compared.
RETURN VALUES
The strncmp() function returns an integer greater than, equal to, or less than 0, according as the string s1 is greater than, equal to, or less than the string s2. The comparison is done using unsigned characters, so that '\200' is greater than '\0'.
La función strncmp() compara hasta n caracteres de las cadenas s1 y s2. Si los caracteres difieren o se alcanza un carácter nulo en cualquiera de las dos cadenas, la comparación se detiene. El valor devuelto es la diferencia entre los valores ASCII de los primeros caracteres que no coinciden. Si las cadenas son iguales en los primeros n caracteres, la función devuelve 0.
Aquí te muestro mi implementación de la función ft_strncmp en mi proyecto de Libft.
#include "libft.h"
int ft_strncmp(const char *s1, const char *s2, size_t n)
{
size_t i;
i = 0;
// Comparar hasta n caracteres o hasta encontrar una diferencia
while (i < n)
{
// Si los caracteres son diferentes o encontramos un carácter nulo
if (s1[i] != s2[i] || s1[i] == '\0' || s2[i] == '\0')
{
// Devolvemos la diferencia entre los valores de los caracteres
return ((unsigned char)s1[i] - (unsigned char)s2[i]);
}
i++;
}
// Si los primeros n caracteres son iguales, devolvemos 0
return (0);
}El siguiente código es un ejemplo de cómo puedes probar la función ft_strncmp():
#include <stdio.h>
int ft_strncmp(const char *s1, const char *s2, size_t n);
int main(void)
{
char str1[] = "Libft";
char str2[] = "Libfx";
int result;
result = ft_strncmp(str1, str2, 4); // Comparamos los primeros 4 caracteres
printf("Resultado de comparación (4 caracteres): %d\n", result); // Debe devolver 0 (iguales)
result = ft_strncmp(str1, str2, 5); // Comparamos los primeros 5 caracteres
printf("Resultado de comparación (5 caracteres): %d\n", result); // Debe devolver un valor distinto de 0 (diferentes)
return 0;
}-
¿Por qué usar
strncmp?
strncmpes útil cuando necesitas comparar cadenas pero solo hasta un número limitado de caracteres, lo que es común cuando trabajas con prefijos de cadenas o cuando solo te interesa una parte de las mismas. -
¿Cuándo usar
strncmp?
Usastrncmpcuando quieras comparar cadenas pero no necesariamente completas, como por ejemplo al validar si una cadena comienza con ciertos caracteres o si dos cadenas tienen un prefijo común.