
Сравнение строк
Библиотека функций 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 символов обеих подстрок отличаются только регистром.