">
НАЗВАНИЕ
string: strcat, strncat, strdup, strcmp, strncmp,
strcpy, strncpy, strlen, strchr, strrchr, strpbrk,
strspn, strcspn, strtok - операции с цепочками символов
СИНТАКСИС
#include <string.h> #include <sys/types.h> char *strcat (s1, s2) char *s1, *s2; char *strncat (s1, s2, n) char *s1, *s2; size_t n; char *strdup (s1) char *s1; int strcmp (s1, s2) char *s1, *s2; int strncmp (s1, s2, n) char *s1, *s2; size_t n; char *strcpy (s1, s2) char *s1, *s2; char *strncpy (s1, s2, n) char *s1, *s2; size_t n; int strlen (s) char *s; char *strchr (s, c) char *s; int c; char *strrchr (s, c) char *s; int c; char *strpbrk (s1, s2) char *s1, *s2; int strspn (s1, s2) char *s1, *s2; int strcspn (s1, s2) char *s1, *s2; char *strtok (s1, s2) char *s1, *s2;
ОПИСАНИЕ
Аргументы s1, s2 и s представляют собой указатели на
цепочки символов, завершающиеся нулевым байтом. Ниже
для краткости вместо выражения "цепочка, указателем на
которую служит s1" употребляется выражение "цепочка s1"
или просто "s1".
Каждая из функций strcat, strncat, strcpy и strncpy изменяет цепочку s1. Эти функции не осуществляют проверку переполнения массива, на который указывает s1.
Функция strcat подцепляет копию цепочки s2 к концу цепочки s1. Функция strncat подцепляет не более n символов. Каждая из них возвращает указатель на результат, завершающийся нулевым байтом.
Функция strdup возвращает указатель на новую цепочку, представляющую собой дубликат цепочки s1. Память под новую цепочку отводится путем обращения к функции malloc(3C). При нехватке памяти, когда новая цепочка не может быть создана, функция strdup возвращает пустой указатель NULL.
Функция strcmp сравнивает свои аргументы и возвращает целое число, меньшее нуля, равное ему или большее него в соответствии с тем, предшествует ли цепочка s1 лексикографически цепочке s2, совпадает с ней, или следует за ней. Функция strncmp осуществляет такое же сравнение, но принимает во внимание не более n первых символов.
Функция strcpy осуществляет копирование цепочки s2 в s1, прекращая его сразу после того, как скопирован нулевой байт. Функция strncpy осуществляет копирование в точности n символов, при необходимости усекая s2 или добавляя нулевые байты в s1. Результат не будет завершаться нулевым байтом, если s2 имеет длину n или более. Обе функции возвращают указатель s1.
Функция strlen возвращает число символов, содержащихся в цепочке s, не считая завершающего нулевого байта.
Функция strchr (strrchr) возвращает значение указателя на первое (последнее) вхождение символа c в цепочку s, либо значение NULL, если цепочка этого символа не содержит. Завершающий нулевой байт цепочки рассматривается при этом как ее составная часть.
Функция strpbrk возвращает значение указателя на первое вхождение в цепочку s1 какого-либо символа из цепочки s2, либо значение NULL, если цепочка s1 не содержит символов из цепочки s2.
Функция strspn (strcspn) возвращает длину начального фрагмента цепочки s1, состоящего из символов, которые содержатся (не содержатся) в цепочке s2.
Функция strtok рассматривает цепочку s1, как состоящую из некоторого (быть может, нулевого) числа лексем, отделенных друг от друга одним или несколькими символами из набора разделителей s2. При первом вызове (с заданным s1) возвращается указатель на первый символ первой лексемы, а в цепочку s1 сразу, вслед за найденной лексемой, записывается нулевой байт. Функция отслеживает его положение в цепочке от вызова к вызову, так что последующие вызовы (при которых значение первого аргумента должно задаваться как NULL) будут работать с фрагментом цепочки s1, непосредственно следующим за этой лексемой. Таким образом, за несколько вызовов цепочка s1 будет просмотрена и все лексемы исчерпаны. Цепочка разделителей s2 может меняться от вызова к вызову. По исчерпании лексем функцией strtok будет возвращено значение NULL.
Для удобства пользователя все эти функции описаны во включаемом файле <string.h>.
СМ. ТАКЖЕ
malloc(3C), malloc(3X).
ОГРАНИЧЕНИЯ
Функции strcmp и strncmp используют аппаратное сравнение символов. Поэтому результаты сравнения цепочек, содержащих символы со старшим битом, равным единице, машинно-зависимы. В данной системе подобные символы трактуются как отрицательные числа.
Так как пересылка символов осуществляется по-разному в различных реализациях, перекрытие областей памяти может привести к неожиданным результатам.