русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-06-12; просмотров: 956; Нарушение авторских прав


Еще одной задачей, предложенной для решения в прошлом занятии, было написание программы, которая посимвольно сравнивает между собой две строки. Для выполнения этой операции, тоже существует готовая функция –strcmp().

Данная функция принимает в качестве аргументов две строки, которые необходимо сравнить. В результате своей работы, если строки одинаковые, он возвращает нуль, и если разные, то либо целое число положительное или отрицательное. Сравнение идет по коду символов в таблице ASCII.

Рассмотрим пример.

Листинг 15.3

#include <stdio.h>

#include <string.h>

int main(void) {

char str1[] = "hello world",

str2[] = "hello world",

str3[] = "hello World";

int n12 = strcmp(str1,str2);

int n13 = strcmp(str1,str3);

int n31 = strcmp(str3,str1);

printf(" %s i %s %d\n", str1, str2,n12);

printf(" %s i %s %d\n", str1, str3,n13);

printf(" %s i %s %d\n", str3, str1,n31);

printf("%c/%d\n",str1[6],str1[6]);

printf("%c/%d\n",str3[6],str3[6]);

return(0);

}

Результат работы данной программы:

Рис.3. Сравнение строк функцией strcmp()

Строки str1 и str2 одинаковые и потому, при их сравнении получилось 0. А вот строки str1 и str3 различаются, регистром символа ‘w’ поэтому результат их сравнения не равен нулю. Обратите внимание, что в одном случае он равен единице, а в другом минус единице. Почему так получается, мы сейчас разберемся.

Строки сравниваются посимвольно, использую соответствие между символом и его кодом в таблице ASCII. Ниже сравнения, в нашей программе указаны коды символов ‘w’ и ‘W’. Как видите, код символа ‘w’ – 119, больше чем код символа ‘W’ – 87. Значит и строка str1больше чем строка str3.

Основное правило: Если, в функции strcmp() строка записанная в первом аргументе, больше чем строка во втором аргументе, то функция возвращает положительное число. Если меньше – отрицательное.



Есть и еще одна функция, предназначенная для сравнения строкstrncmp(). Её отличие лишь в том, что добавляется третий параметр – целое число, указывающее, сколько символов с начала строки необходимо сравнить.

Немного преобразуем предыдущую программу

Листинг 15.4

#include <stdio.h>

#include <string.h>

int main(void) {

char str1[] = "hello world",

str2[] = "hello World";

int n1 = strncmp(str1,str2,6);

int n2 = strncmp(str1,str2,7);

printf("%s i %s %d\n", str1, str2,n1);

printf("%s i %s %d\n", str1, str2,n2);

return(0);

}

Рис.4. Сравнение частей строк, с помощью функции strncmp().

Как видите, когда мы сравнили первые шесть символов двух строк, то получили 0, так как они совпадают. Если же мы сравниваем первые семь символов, то первая строка больше второй, и в ответе получается положительное целое число. Причем в данном случае, это разность между кодами соответствующих символов (119-87 = 32). Пользоваться этим обстоятельством нужно очень осторожно. Не факт, что в других средах разработки, эти функции реализованы точно таким же образом. Т.е. может быть, что где-то strcmp будет тоже возвращать 32, а не 1, как в нашем примере. А где-то возможноstrncmp не будет возвращать 32. Как это реализовано в вашей среде программирования проверьте самостоятельно.



<== предыдущая лекция | следующая лекция ==>
Функция strlen(). | Функции изменения регистра строки.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.255 сек.