Разница между strncmp () и strcmp в C / C ++
Предварительные требования: strncmp, strcmp
Основное различие между этими двумя:
- strcmp сравнивает обе строки до тех пор, пока не появится нулевой символ любой из строк, тогда как strncmp сравнивает не более num символов обеих строк. Но если num равно длине любой строки, то strncmp ведет себя аналогично strcmp .
- Проблема с функцией strcmp заключается в том, что если обе строки, переданные в аргументе, не заканчиваются нулевым символом, то сравнение символов продолжается до сбоя системы. Но с помощью функции strncmp мы можем ограничить сравнение параметром num.
При передаче str1 и str2 в качестве параметров функции strcmp () она сравнивает обе строки, символ за символом, до нулевого символа (' 0'). В нашем случае до символа 's' обе строки остаются такими же, но после этого str1 имеет символ 'h' со значением ASCII 104, а str2 имеет нулевой символ со значением ASCII 0. Поскольку значение ASCII символа str1 больше, чем значение ASCII. символа str2, поэтому функция strcmp () возвращает значение больше нуля. Следовательно, строка str1 больше, чем строка str2 в функции strcmp ().
При передаче этих параметров в функцию strncmp () с 3-м параметром num upto, который хочет сравнить строки, он сравнивает обе строки по символу до num (если num <= длина наименьшей строки) или до нулевого символа наименьшей строки. В нашем случае обе строки имеют одинаковый символ до num , поэтому функция strncmp () возвращает нулевое значение. Следовательно, строка str1 равна строке str2 в функции strncmp ().
// 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
" ); else if (result1 > 0) printf ( "str1 is greater than str2
" ); else printf ( "str2 is greater than str1
" ); printf ( "Value returned by strncmp() is: %d
" , result1); if (result2 == 0) printf ( "str1 is equal to str2
" ); else if (result2 > 0) printf ( "str1 is greater than str2
" ); else printf ( "str2 is greater than str1
" ); printf ( "Value returned by strcmp() is: %d" , result2); return 0; } |
Выход:
str1 равно str2 до числа символов Значение, возвращаемое strncmp (): 0 str1 больше str2 Значение, возвращаемое strcmp (): 104
Эта статья предоставлена Акашем Гуптой . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.