Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

STRING(3C)

НАЗВАНИЕ
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 используют аппаратное сравнение символов. Поэтому результаты сравнения цепочек, содержащих символы со старшим битом, равным единице, машинно-зависимы. В данной системе подобные символы трактуются как отрицательные числа.

Так как пересылка символов осуществляется по-разному в различных реализациях, перекрытие областей памяти может привести к неожиданным результатам.

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...