Функция strcmp

Функция strcmp сравнивает указанную строку с другой строкой, на которую указывает параметр s2. Функция учитывает регистр символов.

Синтаксис

	int strcmp (const char *s1, const char *s2);

Параметры

s1

Указатель на первую сравниваемую строку.

s2

Указатель на вторую сравниваемую строку.

Возвращаемое значение

Функция возвращает целочисленное значение:

- больше нуля, если первая строка больше второй;

- 0 (нуль), если строки равны;

- меньше нуля, если первая строка меньше втрой.

Смотри также

Библиотека стандартных функций С.

Функция объявлена в заголовочном файле string.h

Дополнение

Функции strcmp, wcscmp, _mbscmp


Функции сравнивают строки.

Синтаксис

int strcmp(
   const char *string1,
   const char *string2 
);
int wcscmp(
   const wchar_t *string1,
   const wchar_t *string2 
);
int _mbscmp(
   const unsigned char *string1,
   const unsigned char *string2 
);

Параметры

string1, string2

Строки с завершающим нулем, для сравнения.

Возвращаемое значение

Возвращаемое значение для каждой из этих функций указывает лексикографическое соотношение строки string1 к строке string2.

Значение

Соотношение string1 к string2

< 0 string1 меньше чем string2
0 string1 идентична string2
> 0 string1 больше чем string2

При ошибке функция _mbscmp возвращает значение _NLSCMPERROR, которое определяется в заголовочных файлах STRING.H и MBSTRING.H.

Замечания

Функция strcmp сравнивает строки string1 и string2 лексикографически и возвращает значение, служащее признаком их взаимозависимости. Функции wcscmp и _mbscmp - это широкосимвольная и состоящяя из многобайтовых символов версии функции strcmp. Параметры и возвращаемое значение wcscmp - широкосимвольные строки; таковые для _mbscmp являются состоящими из многобайтовых символов строками. _mbscmp распознает состоящие из многобайтовых символов последовательности согласно текущей многобайтовой кодовой странице и возвращает значение _NLSCMPERROR при ошибке. (Для получения дополнительной информации, см. Кодовые страницы). Иначе эти три функции ведут себя тождественно.

Унифицированно-текстовые стандартные отображения

процедура TCHAR.H

_UNICODE & _MBCS не определяется

определяется как _MBCS

определяется как _UNICODE

_tcscmp strcmp _mbscmp wcscmp

Функции strcmp отличаются от функций strcoll тем, что на сравнения при помощи strcmp, не оказывает влияния язык страны (местности), тогда как манера сравнений при помощи strcoll определяется категорией LC_COLLATE текущего языка страны. Дополнительную информацию о категории LC_COLLATE, см. описание функции setlocale.

В "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" <"ABCD ^"), если сравнение - в верхнем регистре.

Пример

//crt_strcmp.c

#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";

int main( void )
{
   char tmp[20];
   int result;
   /* Зависит от регистра */
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy( tmp, "greater than" );
   else if( result < 0 )
      strcpy( tmp, "less than" );
   else
      strcpy( tmp, "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );
   /* Не зависит от регистра (может использовать эквивалентную функцию _stricmp) */
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy( tmp, "greater than" );
   else if( result < 0 )
      strcpy( tmp, "less than" );
   else
      strcpy( tmp, "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}

Вывод

Сравниваемые строки:
   The quick brown dog jumps over the lazy fox
   The QUICK brown dog jumps over the lazy fox

   strcmp:   Строка 1 больше чем строка 2
   _stricmp:  Строка 1 равна строке 2

 

Смотри также

Программы преобразования строк | memcmp | _memicmp | strcoll,  Функции | _stricmp | strncmp | _strnicmp | strrchr | strspn | strxfrm | Подпрограммы Исполняющей среды и Эквиваленты .NET_Framework

Требования

Подпрограмма

Необходимый заголовочный файл

Совместимость

strcmp <string.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP
wcscmp <string.h> или <wchar.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP
_mbscmp <mbstring.h> Win 98, Win Me, Win NT, Win 2000, Win XP

Дополнительную информацию о совместимости, см. в статье Совместимость во Введении.

Библиотеки

Все версии Библиотек исполняющей системы языка C.

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz