Requisitos previos: strncmp , strcmp La diferencia básica entre estos dos es:
- strcmp compara ambas strings hasta que aparece el carácter nulo de cualquiera de las strings, mientras que strncmp compara como máximo el número de caracteres de ambas strings. Pero si num es igual a la longitud de cualquiera de las strings, entonces strncmp se comporta de manera similar a strcmp .
- El problema con la función strcmp es que si las dos strings pasadas en el argumento no terminan con un carácter nulo, la comparación de caracteres continúa hasta que el sistema falla. Pero con la función strncmp podemos limitar la comparación con el parámetro num .
Cuando se pasan str1 y str2 como parámetros a la función strcmp() , compara ambas strings carácter por carácter hasta el carácter nulo(‘\0’). En nuestro caso, hasta el carácter ‘s’, ambas strings siguen siendo las mismas, pero después de eso , str1 tiene el carácter ‘h’ con un valor ASCII de 104 y str2 tiene un carácter nulo con un valor ASCII de 0. Dado que el valor ASCII del carácter str1 es mayor que el valor ASCII del carácter str2, por lo que la función strcmp() devuelve un valor mayor que cero. Por lo tanto, la string str1 es mayor que la string str2 en la función strcmp(). Cuando pase estos parámetros en la función strncmp() con el tercer parámetro numhasta el cual desea comparar strings, entonces compara las strings carácter por carácter hasta num (si num <= longitud de la string más pequeña) o hasta el carácter nulo de la string más pequeña. En nuestro caso, ambas strings tienen el mismo carácter hasta num , por lo que la función strncmp() devuelve el valor cero. Por lo tanto, la string str1 es igual a la string str2 en la función strncmp().
CPP
// C, C++ program demonstrate difference between // strncmp() and strcmp() #include <stdio.h> #include <string.h> int main() { // Take any two strings char str1[] = "akash"; char str2[] = "akas"; // Compare strings using strncmp() int result1 = strncmp(str1, str2, 4); // Compare strings using strcmp() int result2 = strcmp(str1, str2); // num is the 3rd parameter of strncmp() function if (result1 == 0) printf("str1 is equal to str2 upto num characters\n"); else if (result1 > 0) printf("str1 is greater than str2\n"); else printf("str2 is greater than str1\n"); printf("Value returned by strncmp() is: %d\n", result1); if (result2 == 0) printf("str1 is equal to str2\n"); else if (result2 > 0) printf("str1 is greater than str2\n"); else printf("str2 is greater than str1\n"); printf("Value returned by strcmp() is: %d", result2); return 0; }
Producción:
str1 is equal to str2 upto num characters Value returned by strncmp() is: 0 str1 is greater than str2 Value returned by strcmp() is: 104
Veamos las diferencias en forma tabular -:
strncmp() | strcmp | |
1. | Es una función de biblioteca C. | Es una función de biblioteca en C y C++ |
2. |
Su sintaxis es -: strncmp(const char *str1, const char *str2, size_t n) |
Su sintaxis es -: int strcmp (const char * str1, const char * str2); |
3. | Toma dos parámetros que son string1 y string2 | Esta función realiza una comparación binaria de los caracteres. |
4. | Su valor de retorno es de tipo entero. | Realiza operaciones hasta llegar a NULL. |
Este artículo es una contribución de Akash Gupta . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA