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

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

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.

В примере сравниваются две строки и результат сравнения выводится на экран.

Работа со строками в C

Имеется ряд функций для работы со строками в C.

Файл String.h содержит прототипы функций работы со строками C.

Прямо сейчас на примерах рассмотрим Си функции работы со строками.

strcmp

Сравнение строк в C, пример:

Две C строки объявлены в примере. Они одинаковы. Предложим функции сравнения строк в C strcmp сравнить эти строки. Прототип функции strcmp в файле String.h:

Если символы строки _Str1 раньше встречаются в алфавите, то _Str1 больше, чем _Str2 и результат функции будет меньше нуля. Если они равны, как в примере, то результат равен нулю. Если символы строки _Str2 раньше встречаются в алфавите, то _Str2 больше, чем _Str1 и результат функции будет меньше нуля. Функция strcmp различает большие и маленькие буквы.

Читайте также:  Команда copy в командной строке примеры

В примере строки равны, поэтому получаем:

Нулевой результат говорит о том, что строки равны.

stricmp

Ещё одна функция сравнения строк в Си в файле String.h

игнорирует разницу больших и маленьких букв, в остальном такая же как и strcm.

strlen

Длину строки в Си определяет функция strlen из файла String.h:

Функция strlen возвращает длину строки C в виде количества байтов. Пример strlen:

Получаем:

В примере строка “stroka” содержит 6 символов. Функция определения длины строки C strlen выдаёт результат 6 байтов, т.е. одному символу соответствует один байт. Так оно и есть на самом деле.

strcpy

strcpy – копирование строк в C. Это ещё одна функция работы со строками C. Пример копирования строки в Си:

В примере создаём массив cMassiv для элементов типа char, и строку szStr. Функция strcpy копирует szStr в первый элемент массива, т.е. в cMassiv[0].

Получаем:

Прототип функции strcpy:

strncpy

strncpy – копирование строк в C. Это ещё одна функция работы со строками C. Пример копирования строки в Си:

Получаем:

В примере создаём массив cMassiv для элементов типа char, и строку szStr. Функция strcpy копирует szStr в первый элемент массива, т.е. в cMassiv[0]. А далее с помощью функции strncpy копируем 3 первых символа строки szStr2 в строку, хранящуюся в первом элементе массива, т.е. в cMassiv[0].

Прототип функции strncpy:

strcat

strcat – конкатенация строк в C, т.е. присоединение одной строки к другой. Это ещё одна функция работы со строками C. Пример конкатенации строки в Си:

Получаем:

Прототип функции strcat:

strncat

strncat – конкатенация строк в C, т.е. присоединение одной строки к другой. Это ещё одна функция работы со строками C. Пример конкатенации строки в Си:

Читайте также:  Нормальный пробег автомобиля за год

Получаем:

Здесь прибавляем три символа втрой строки к первой.

Прототип функции strncat:

strstr

strstr – поиск первого вхождения одной строки в другую. Это ещё одна функция работы со строками C. Пример в Си:

Получаем:

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

if (string1 == string2)

Рис. 8. Синтаксисфункцииstrcmp()

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

if (strcmp(name1, name2) == 0)

puts("Имена не совпадают");

Некоторые компиляторы возвращают отрицательное число, если первая строка оказывается с точки зрения алфавита «меньше» второй, и положительное число, если «больше».

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

char name[10], name1[10];

for (index = 0; index 0; index—)

Здесь значение длины строки используется в качестве индекса в условии цикла for, причем значение его уменьшается при каждом повторе цикла. Если строка содержит 5символов, цикл будет повторен 5раз, изменяя значение переменной index от 5 до 1. Так как элементы такого массива имеют номера от 0 до 4, то, чтобы получить номер элемента, из значения переменной index вычитается единица.

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

Язык Си не позволяет непосредственно присваивать символы строке, используя инструкции вроде

Для этой цели можно вызвать функцию strcpy(), с которой позволяют работать большинство компиляторов. Синтаксис функции следующий:

В первом примере символы "Сэм" присваиваются строковой переменной с именем name. Во втором примере символы, которые уже были присвоены переменной name1, копируются в переменную name.

Читайте также:  Снять блокировку экрана windows 10

Для того чтобы выполнить эти же действия с помощью собственных инструкций, вам придется последовательно присваивать символьные значения каждому элементу массива:

char name[] = "Алан";

int count, index;

for (index = 0; index

Замечания по Си++

Благодаря перегрузке язык Си++ допускает использование оператора + для сложения двух строк с помощью инструкции:

Ссылка на основную публикацию
Функции в вольфрам математика
Функции пользователя Хотя в систему входят многие сотни встроенных функций (начиная от элементарных и кончая специальными математическими функциями и системными...
Учимся рисовать в paint
Серия видео уроков «Создание компьютерного рисунка в программе Paint» МОУ «Межборская средняя общеобразовательная школа» (Уроки предназначены для детей 9-12 лет,...
Учиться без троек сканворд
Музыкант, играющий на барабанах, тарелках Передовой работник производства (ударник) Часть затвора стрелкового оружия (ударник) "Барабанщик" коммунистического труда (устар.) (ударник) "Барабанщик"...
Функция abs в паскале
Возвращает абсолютную величину параметра. Объявление Function Abs(X) : (тип параметра); Режим Windows, Real, Protected Замечания Параметр X — выражение вещественного...
Adblock detector