Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
80
Добавлен:
16.02.2016
Размер:
129.02 Кб
Скачать

Сравнение строк

Библиотека функций string.h предлагает к использованию готовые функции, выполняющие сравнение строк. Ниже приводятся функции, выполняющие посимвольное сравнение двух строк.

Функция strcmp () имеет синтаксис:

int strcmp(const char* strl,

const char* str2)

После сравнения строк strl и str2 данная функция возвращает в результате одно из следующих значений:

• <0 - если строка strl меньше, тем str2;

• =0 - если строки эквивалентны;

• >0-если строка strl больше, тем str2.

Эта функция производит сравнение, различая прописные и строчные буквы. Следующий пример иллюстрирует работу функции strcmp ():

char strl[]="Ошибка открытия базы"; char str2[]="Ошибка открытия Базы"; int i;

i = strcmp(strl, str2);

В результате переменной i будет присвоено положительное значение, так как строка из strl меньше, чем строка из str2, по той причине, что прописные буквы имеют код символов меньше, чем те же символы в нижнем регистре (слово "базы " в первом случае начинается со строчной литеры, а во втором - с прописной).

Функция stricmp () имеет синтаксис:

int stricmp(const char* strl, const char* str2)

Данная функция сравнивает строки strl и str2, не различая регистра символов. Возвращается одно из следующих целочисленных значений:

• <0-если строка strl меньше, чем str2;

• =0 - если строки эквивалентны;

• >0 - если строка stri больше, чем str2.

Следующий фрагмент программы демонстрирует применение функции stricmp ():

char strl[]="Moon"; char str2[]="MOON"; int i ;

i = stricmp(strl, str2);

В данном случае переменной i будет присвоено значение 0 (сигнализируя тем самым совпадение строк), так как strl и str2 отличаются только регистром.

Функция strncmp () проводит сравнение определенного числа первых символов двух строк. Регистр символов при этом учитывается. Функция имеет следующий прототип:

int strncmp(const char* strl,

const char* str2, size_t num)

Данная функция сравнивает num первых символов двух строк, на которые указывают strl и str2, и возвращает одно из следующих значений:

• <0-если строка strl меньше, чем str2;

• =0 - если строки эквивалентны;

• X) - если строка strl больше, чем str2.

Рассмотрим пример использования функции strncmp ().

char strl[]="Ошибка открытия базы"; char str2[]="Ошибка Открытия базы";

int i ;

i = strncmp(strl, str2, 12);

В результате сравнения первых 12-ти символов обеих строк переменная i получит положительное значение, так как подстроки "Ошибка откры" и "Ошибка Откры" отличаются одним символом и в первом случае код символа больше, чем во втором.

Функция strnicmp() производит сравнение определенного числа первых символов двух строк, не обращая внимания на регистр символов. Данная функция описана следующим образом:

int strnicmp(const char* strl,

const char* str2, size t num)

Функция возвращает целочисленное значение согласно следующему правилу:

• <0 — если строка strl меньше, чем str2;

• =0 - если строки эквивалентны;

• >0 - если строка s trl больше, чем s tr2.

В следующем примере производится сравнение заданного числа символов подстрок:

char strl[]="Opening error"; char str2[]="0pening Error..."; int i;

i = strnicmp(strl, str2, 13);

В результате переменной i будет присвоено значение 0, так как первые 13 символов обеих подстрок отличаются только регистром.

Соседние файлы в папке ЯзыкС++Глушаков