Написать аналог функций strcat и strcmp - C (СИ)
Формулировка задачи:
Помогите пожалуйста написать аналог функций strcat и strcmp на Си
Решение задачи: «Написать аналог функций strcat и strcmp»
textual
Листинг программы
int strcmp(const char * a, const char * b) {
return ( *a && *a == *b ) ? strcmp(a + 1, b + 1) : *a - *b;
}
Объяснение кода листинга программы
- Функция
strcmpпринимает два указателя на строки (const char * aиconst char * b). - Внутри функции используется оператор
return, который возвращает результат сравнения строк. - Условие
( *a && *a == *b )проверяет, что оба символа (указатели на которые содержатся в переменныхaиb) не равны нулю и равны друг другу. - Если условие истинно, то функция вызывает саму себя, передавая в качестве аргументов
a + 1иb + 1. Это позволяет сравнивать следующие символы в строках. - Если условие ложно, то функция возвращает разность между символами
*aи*b. - Если один из символов равен нулю (т.е. строка закончилась), то возвращается отрицательное значение, чтобы слева направо сравнение строк было согласовано.
- Если оба символа равны нулю, то возвращается 0, что означает, что строки равны.
- Если символы не равны, то возвращается разница между ними.
- Результат сравнения сохраняется в переменной
result. - Если
resultотрицательный, то строкаaнаходится слева отbв алфавитном порядке. - Если
resultположительный, то строкаaнаходится справа отbв алфавитном порядке. - Если
resultравен нулю, то строкиaиbравны. - В конце функции возвращается значение переменной
result. - Функция
strcmpиспользуется для сравнения строк на равенство или неравенство. - Функция
strcatиспользуется для добавления строкиbк концу строкиa. - Пример использования функции
strcmp:if (strcmp(a, b) < 0)— это условие означает, что строкаaнаходится слева отbв алфавитном порядке. - Пример использования функции
strcat:strcat(a, b);— это добавляет строкуbк концу строкиa. - Функция
strcmpявляется чувствительной к регистру. - Функция
strcatне проверяет переполнение буфера. - Функции
strcmpиstrcatявляются базовыми функциями для работы со строками в языке C.