Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 3).doc
Скачиваний:
135
Добавлен:
15.04.2015
Размер:
1.34 Mб
Скачать

Операции над строками символов Определение длины строки

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

#include <string.h:>

size_t strlen(char *str);

Тип size_t идентичен типу unsigned.

str – указатель на строку, длину которой необходимо определить.

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

Копирование строк

При копировании строк требуется копирование исходной строки из занимаемого ею участка памяти в другой участок, где находится строка-копия.

Функция strcpy()

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

#include <string.h>

char *strcpy( char *dst, const char *src);

По определению, функция strcpy() выполняет копирование строки, находящейся по адресу src (источник) вместе с ее завершающим нулевым символом \0, в участок памяти, начинающийся по адресу в указателе dst (приемник).

Функция возвращает указатель на новую строку, dst.

До вызова функции strcpy() необходимо выделить память для новой строки. Сама функ­ция не проверяет, достаточно ли памяти имеется по указанному ей адресу. Если распределе­ние памяти не выполнялось, то функция затрет strlen(src) байт новой информацией, на­чиная с адреса, указанного в dst.

Функция strncpy()

Эта функция в отличие от strcpy() копирует определенное количество символов.

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

#include <string.h>

char *strncpy( char *dst, const char *src, size_t n);

Функция копирует не более n символов из srс в dst.

Если строка src короче, чем число символов, то к ней добавляется достаточное количество нулевых символов, чтобы вся dst копировалось ровно n символов.

Если строка src длиннее, чем n символов, то к dst не добавляется завершающий нулевой символ.

Функция возвращает указатель на dst.

Функция strdup()

По назначению она аналогична strcpy(), однако сама выполняет распределение памяти для буфера, в который копируется строка, с помощью вызова функции malloc(). Эта функция не определена в стандарте ANSI. Она входит в биб­лиотеки многих компиляторов, таких как Microsoft, Borland и Symantec Си, но другие компи­ляторы могут ее и не поддерживать (или поддерживать в другом виде).

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

char *strdup( char *src);

Аргумент src представляет собой указатель на копируемую строку. Функция возвращает указатель на строку, в которую было выполнено копирование — т.е. на буфер, созданный с помощью malloc() — или NULL, если выделить память оказалось невозможным.

Сравнение двух целых строк - strcmp()

Функция strcmp() предназначена для посимвольного сравнения двух строк.

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

int strcmp(const char *str1, const char *str2);

Аргументы str1 и str2 указывают на сравниваемые строки.

Значения, возвращаемые функцией strcmp()

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

Смысл

Отрицательное

strl меньше str2

0

strl равна str2

Положительное

strl больше str2

Сравнение фрагментов строк – strncmp()

Библиотечная функция strncmp() сравнивает фрагмент заданной длины из одной строки с другой строкой. Она имеет следующий прототип:

int strncmp(const char *str1, const char *str2, size_t n);

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

В стандартной библиотеке ANSI Си нет функций для сравнения строк без различия регистра символов. Однако многие распространенные компиляторы Си имеют нестандартные функции для этой цели. В библиотеке Borland имеется функция strcmpi(). Читайте документацию.