функция strcmp в си код
Описание функций языка Си
All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
strcmp – сравнение строк.
#include
int strcmp (const char *str1, const char *str2);
str1, str2 – указатели на сравниваемые строки.
0 – если сравниваемее строки идентичны.
Положительное число – если строки отличаются и код первого отличающегося символа в строке str1 больше кода символа на той же позиции в строке str2.
Отрицательное число – если строки отличаются и код первого отличающегося символа в строке str1 меньше кода символа на той же позиции в строке str2.
Функция побайтно сравнивает коды символов двух строк, на которые указывают аргументы функции. Сравнение продолжается до встречи первого отличающегося символа или пока не будут проверены все символы строк.
Если все символы строк совпали, то возвращается 0.
Если при сравнении встретились отличающиеся символы, то сравнение прекращается и возвращается отрицательное или положительное число, в зависимости от того больше или меньше код символа строки str1, кода символа строки str2 на той же позиции (см. возвращаемые значения).
Если строки разной длины, то возвращается положительное число, если строка str1 длиннее строки str2, или отрицательное число, если строка str2 длиннее строки str1.
В примере сравниваются две строки и результат сравнения выводится на экран.
Функции для работы со строками
Пожалуйста, приостановите работу AdBlock на этом сайте.
В языке Си предусмотрено множество разных функций, предназначенных для работы со строками. Для их использования необходимо подключить заголовочный файл string.h
Разберём самые простые из них:
Функция strlen
Данная функция возвращает целое число – длину строки, которая ей передана в качестве аргумента.
Рис.1 Работа функции strlen.
Функция склеивания строк strcat.
Результат работы этой программы ниже:
Рис.2 Работа функции strcat.
Функция сравнения строк strcmp
Данная функция сравнивает посимвольно строки, переданные ей в качестве аргументов. Функция strcmp вернёт нуль, если строки равны между собой, иначе какое-либо другое целое число (положительное или отрицательное). Общее правило таково: Если в функции strcmp() первая строка больше, чем вторая строка, то функция возвращает положительное число. Если меньше – отрицательное. Сравнение осуществляется по кодам символов в таблице ASCII
Посмотрите на пример.
Рис.3 Работа функции strcmp.
Функция копирования строк strcpy.
Данная функция принимает на вход две строки, а потом копирует вторую строку в первую. Простой примерчик.
Рис.4 Работа функции strcpy.
Как и в случае с strcat программисту нужно самому следить за тем, чтобы в первой строке хватило места для копирования в неё второй строки.
Есть и более сложные функции работы со строками, но о них в базовой части курса мы говорить не будем.
Практика
Решите предложенные задачи:
Для удобства работы сразу переходите в полноэкранный режим
Исследовательские задачи для хакеров
Функция strcmp в си код
Функция strcmp сравнивает указанную строку с другой строкой, на которую указывает параметр s2. Функция учитывает регистр символов.
Синтаксис
Параметры
Указатель на первую сравниваемую строку.
Указатель на вторую сравниваемую строку.
Возвращаемое значение
Функция возвращает целочисленное значение:
— больше нуля, если первая строка больше второй;
— 0 (нуль), если строки равны;
— меньше нуля, если первая строка меньше втрой.
Смотри также
Библиотека стандартных функций С.
Функция объявлена в заголовочном файле string.h
Функции сравнивают строки.
Синтаксис
Параметры
Строки с завершающим нулем, для сравнения.
Возвращаемое значение
Возвращаемое значение для каждой из этих функций указывает лексикографическое соотношение строки string1 к строке string2.
Значение
Соотношение string1 к string2
Замечания
Унифицированно-текстовые стандартные отображения
процедура TCHAR.H
_UNICODE & _MBCS не определяется
определяется как _MBCS
определяется как _UNICODE
В «C» язык страны (местности) определяет порядок символов в символьном наборе (символьный набор ASCII) такой же, что и лексикографический символьный порядок(очередность). Однако, в языках других стран, порядок символов в символьном наборе может отличаться от лексикографического порядка( очередности). Например, в некоторых европейских языках, символ ‘a’ (значение 0x61) предшествует символу ‘ä’ (значение 0xE4) в символьном наборе, но символ ‘ä’ предшествует символу ‘a’ лексикографически.
В языках страны (местности) для которых символьный набор и лексикографический символьный порядок (их очередность) различаются, используют функцию strcoll, а не strcmp для лексикографического сравнения строк согласно параметру категории LC_COLLATE текущего языка страны. Таким образом, чтобы выполнить лексикографическое сравнение языка страны в вышеупомянутом примере, используйте strcoll, а не strcmp. Альтернативно, Вы можете использовать функцию strxfrm исходных) строк, а затем использовать strcmp на получающихся строках.
Функции _stricmp, _wcsicmp, и _mbsicmp сравнивают строки первым преобразованием их к их формам нижнего регистра. Две строки, содержащие в себе символы, расположенные между ‘Z’ и ‘a’ в таблице ASCII (‘[‘, ‘\’, ‘]’, ‘^’, ‘_’, и ‘`’), сравниваются по-разному, в зависимости от их регистра. Например, две строки, «ABCDE» и «ABCD ^» сравниваются одним способом, если сравнение идет в нижнем регистре («abcde»> «abcd ^») и другим способом («ABCDE»
Дополнительную информацию о совместимости, см. в статье Совместимость во Введении.
Библиотеки
Все версии Библиотек исполняющей системы языка C.
_mbscmp и _mbscmp_l не могут использоваться в приложениях, выполняемых в среда выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
Параметры
locale
Используемый языковой стандарт.
Возвращаемое значение
Значение | Отношение типа string1 к string2 |
---|---|
string1 меньше string2 | |
0 | string1 идентичен string2 |
> 0 | string1 больше string2 |
Remarks
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это, см. раздел глобальное состояние в CRT.
Универсальное текстовое сопоставление функций
TCHAR.H ассемблер | _UNICODE & _MBCS не определено | _MBCS определяется | _UNICODE определяется |
---|---|---|---|
_tcscmp | strcmp | _mbscmp | wcscmp |
В языковом стандарте «C» порядок символов в наборе символов (набор символов ASCII) совпадает с лексикографическим порядком символов. Однако в других языковых стандартах порядок символов в наборе символов может отличаться от лексикографического порядка. Например, в некоторых европейских языковых стандартах символ » a » (значение 0x61) предшествует символу » ä » (значение 0xE4) в кодировке, но символ «» находится перед ä символом » a » лексикографически.
В языковых стандартах, где кодировка и порядок символов лексикографическим порядком различаются, можно использовать strcoll вместо strcmp для сравнения строк в лексикографическим порядком. Кроме того, можно использовать strxfrm для исходных строк, а затем использовать strcmp для результирующих строк.
Требования
Подпрограмма | Обязательный заголовок |
---|---|
strcmp | |
wcscmp | либо |
_mbscmp |
Дополнительные сведения о совместимости см. в статье Compatibility.
Функции для работы со строками в C++
После того, как мы с вами познакомились со строками и символьными массивами в C++, рассмотрим самые распространённые функции для работы с ними. Урок будет полностью построен на практике. Мы будем писать собственные программы-аналоги для обработки строк и параллельно использовать стандартные функции библиотеки cstring ( string.h – в старых версиях). Так вы примерно будете себе представлять, как они устроены. К стандартным функциям библиотеки cstring относятся:
Это конечно не все функции, а только те, которые мы разберём в этой статье.
strlen() (от слова length – длина)
Наша программа, которая подсчитает количество символов в строке:
Так будет выглядеть код, с заменой нашего участка кода на функцию strlen() :
Результат будет и в первой программе и во второй аналогичен:
strcat() (от слова concatenation – соединение)
Программа, которая в конец одной строки, дописывает вторую строку. Другими словами – объединяет две строки.
Реализация объединения двух строк, используя стандартную функцию, заняла одну строчку кода в программе – 14-я строка.
На что следует обратить внимание и первом и во втором коде – размер первого символьного массива должен быть достаточным для помещения символов второго массива. Если размер окажется недостаточным – может произойти аварийное завершение программы, так как запись строки выйдет за пределы памяти, которую занимает первый массив. Например:
strcpy() (от слова copy – копирование)
Реализуем копирование одной строки и её вставку на место другой строки.