Введение в класс std

Examples[edit]

To determine the number of characters in a string, the function is used:

    #include <stdio.h>
    #include <string.h>
    ...
    int length, length2;
    char *turkey;
    static char *flower= "begonia";
    static char *gemstone="ruby ";
    
    length = strlen(flower);
    printf("Length = %d\n", length); // prints 'Length = 7'
    length2 = strlen(gemstone);
    
    turkey = malloc( length + length2 + 1);
    if (turkey) {
      strcpy( turkey, gemstone);
      strcat( turkey, flower);
      printf( "%s\n", turkey); // prints 'ruby begonia'
      free( turkey );
    }

Note that the amount of memory allocated for ‘turkey’ is one plus the sum of the lengths of the strings to be concatenated. This is for the terminating null character, which is not counted in the lengths of the strings.

Exercisesedit

  1. The string functions use a lot of looping constructs. Is there some way to portably unravel the loops?
  2. What functions are possibly missing from the library as it stands now?

Поиск

void* memchr (void * ptr, int value, size_t num);

Проводит поиск среди первых num байтов участка памяти, на который ссылается ptr, первого вхождения значения value, которое трактуется как unsigned char. Возвращает указатель на найденный элемент, либо NULL.

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

void main() {
	char str[] = "Hello World!";
	char *ptr = NULL;

	ptr = (char*) memchr(str, '\0', 4000);
	if (ptr != NULL) {
		printf("first zero byte address is %p, strlen = %d", ptr, ptr - str);
	} else {
		printf("no null byte in memory block");
	}
	getch();
}
char* strchr (char * str, int character);

Возвращает указатель на место первого вхождения character в строку str. Очень похожа на функцию memchr, но работает со строками, а не с произвольным блоком памяти.

size_t strcspn ( const char * str1, const char * str2 );

Возвращает адрес первого вхождения любой буквы из строки str2 в строке str1. Если ни одно включение не найдено, то возвратит длину строки.

Пример — найдём положение всех гласных в строке

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main() {
	char str[] = "So if you want to love me\n"
				 "Then darling don't refrain\n"
				 "Or I'll just end up walking\n"
				 "In the cold November rain\n";
	char vowels[] = "aeiouy";
	int i;

	i = 0;
	while (str) {
		i = i + strcspn(&str, vowels);
		printf("%d ", i);
		i++;
	}
	getch();
}

Здесь обратите внимание на строку i++ после printf. Если бы её не было, то strcspn возвращал бы всегда 0, потому что в начале строки стояла бы гласная, и произошло зацикливание.

Для решения этой задачи гораздо лучше подошла функция, которая возвращает указатель на первую гласную.

char* strpbrk (char * str1, const char * str2)

Функция очень похожа на strcspn, только возвращает указатель на первый символ из строки str1, который есть в строке str2.
Выведем все гласные в строке

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main() {
	char str[] = "Cos' it's a bittersweet symphony this life...\n"
		         "Trying to make ends meet, you're a slave to the money then you die.";
	char vowels[] = "aeiouy";
	char *p = NULL;

	p = strpbrk(str, vowels);
	while (p) {
		printf("%c ", *p);
		p++;
		p = strpbrk(p, vowels);
	}
	getch();
}
char* strrchr (char * str, int character );

Возвращает указатель на последнее вхождение символа в троку.

size_t strspn (const char * str1, const char * str2);

Возвращает длину куска строки str1, начиная от начала, который состоит только из букв строки str2.

Пример — вывести число, которое встречается в строке.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main() {
	char str[] = "on 21st of May";
	char nums[] = "0123456789";
	char number;
	uintptr_t i;

	//Определяем, где начинаются цифры
	size_t start = strcspn(str, nums);
	//Определяем, где они заканчиваются, относительно start
	size_t end = strspn(&str, nums);
	
	for (i = 0; i < end; i++) {
		printf("%c", str);
	}

	getch();
}
char* strstr (char * str1, const char * str2);

Возвращает указатель на первое вхождение строки str2 в строку str1.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main() {
	char str[] = "I'll drown my beliefs\n"
				 "To have you be in peace\n"
				 "I'll dress like your niece\n"
				 "And wash your swollen feet\n";
	char niece[] = "niece";
	
	char* p = strstr(str, niece);
	printf("%s", p);
	getch();
}
char* strtok (char * str, const char * delimiters);

Разбивает строку на токены. В данном случае токенами считаются последовательности символов, разделённых символами, входящими в группу разделителей.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main() {
	char str[] = "After working in India during the late 1970s and 1980s, "
		"Shankar's profile in the West began to rise again in the mid-1990s "
		"as his music found its way into club DJ sets, particularly in London.";
	char delim[] = " \t\n\,.-";
	char *p = strtok(str, delim);
    while (p != NULL) {
        printf ("%s\n",p);
        p = strtok (NULL, delim);
    }
	getch();
}

Функции

Имя Примечания
копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат не определён (возможно как правильное копирование, так и нет)
копирует n байт из области памяти src в dest, которые в отличие от могут перекрываться
возвращает указатель на первое вхождение значения c среди первых n байтов s или NULL, если не найдено
сравнивает первые n символов в областях памяти
заполняет область памяти одним байтом z
дописывает строку src в конец dest
дописывает не более n начальных символов строки src (или всю src, если её длина меньше) в конец dest
возвращает адрес символа c в строке s, начиная с головы, или NULL, если строка s не содержит символ c
возвращает адрес символа c в строке s, начиная с хвоста, или NULL, если строка s не содержит символ c
лексикографическое сравнение строк (возвращает «0», если строки одинаковые, положительное, если первая строка больше, и отрицательное, если меньше)
лексикографическое сравнение первых n байтов строк
лексикографическое сравнение строк с учетом локали collating order
копирует строку из одного места в другое
копирует до n байт строки из одного места в другое
возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная)
возвращает длину строки
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject
находит первое вхождение любого символа, перечисленного в accept
находит первое вхождение строки needle в haystack
преобразует строку в последовательность токенов. Не потоко-безопасная, не реентерабельная.
создает оттранслированную копию строки, такую, что дословное сравнение её (strcmp) будет эквивалентно сравнению с коллатором.

Расширения к ISO C

Имя Примечания Определена в
создает копию строки и возвращает указатель на неё POSIX; первоначально расширение в BSD
вариант с контролем границ ISO/IEC WDTR 24731
вариант с возвратом байта, следующего за последним записанным GNU
копирует до n байт из одной области памяти в другую (не должны пересекаться), останавливаясь при встрече символа c UNIX 98?
возвращает строкое представление кода ошибки errno (потоко-безопасная; небольшая разница в семантике между GNU и XSI/POSIX) GNU, POSIX
вариант с контролем границ первоначально OpenBSD, теперь также FreeBSD, Solaris, Mac OS X
потоко-безопасная реентерабельная версия strtok POSIX
по аналогии с , возвращает строковое представление сигнала (не потоко-безопасная) BSDs, Solaris, Linux

Функции

Имя Примечания
копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат не определён (возможно как правильное копирование, так и нет)
копирует n байт из области памяти src в dest, которые в отличие от могут перекрываться
возвращает указатель на первое вхождение значения c среди первых n байтов s или NULL, если не найдено
сравнивает первые n символов в областях памяти
заполняет область памяти одним байтом z
дописывает строку src в конец dest
дописывает не более n начальных символов строки src (или всю src, если её длина меньше) в конец dest
возвращает адрес символа c в строке s, начиная с головы, или NULL, если строка s не содержит символ c
возвращает адрес символа c в строке s, начиная с хвоста, или NULL, если строка s не содержит символ c
лексикографическое сравнение строк (возвращает «0», если строки одинаковые, положительное, если первая строка больше, и отрицательное, если меньше)
лексикографическое сравнение первых n байтов строк
лексикографическое сравнение строк с учетом локали collating order
копирует строку из одного места в другое
копирует до n байт строки из одного места в другое
возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная)
возвращает длину строки
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject
находит первое вхождение любого символа, перечисленного в accept
находит первое вхождение строки needle в haystack
преобразует строку в последовательность токенов. Не потоко-безопасная, не реентерабельная.
создает оттранслированную копию строки, такую, что дословное сравнение её (strcmp) будет эквивалентно сравнению с коллатором.

Расширения к ISO C

Имя Примечания Определена в
создает копию строки и возвращает указатель на неё POSIX; первоначально расширение в BSD
вариант с контролем границ ISO/IEC WDTR 24731
вариант с возвратом байта, следующего за последним записанным GNU
копирует до n байт из одной области памяти в другую (не должны пересекаться), останавливаясь при встрече символа c UNIX 98?
возвращает строкое представление кода ошибки errno (потоко-безопасная; небольшая разница в семантике между GNU и XSI/POSIX) GNU, POSIX
вариант с контролем границ первоначально OpenBSD, теперь также FreeBSD, Solaris, Mac OS X
потоко-безопасная реентерабельная версия strtok POSIX
по аналогии с , возвращает строковое представление сигнала (не потоко-безопасная) BSDs, Solaris, Linux

4.27 strxfrm — трансформирует строку

В выдаваемый массив, указанный s1, помещается не больше n
знаков включая завершающий знак NULL. Если n равно 0, то s1 может быть
NULL-yказателем. Если область, куда копируется строка, и область,
откуда она копируется, перекрываются, то результат не определен.

При локале C эта функция выполняет копирование.

Функция strxfrm возвращает длину трансформированной строки (не
включая завершающий знак NULL). Если возвращаемое значение равно n или
больше, то содержимое массива, указанного s1 не определено.

Стандарт ANSI требует наличия функции strxfrm.

strxfrm не требует никаких процедур ОС.

ВпередНазад

Спонсоры:

Хостинг:

Maxim ChirkovДобавить, Поддержать, Вебмастеру

4.17 strerror — преобразовывает номер ошибки в строку

Эта реализация strerror печатает следующие строки, в
зависимости от значений, определенных в errno.h:

E2BIG

Список аргументов слишком длинный

EACCES

Доступ запрещен

EADV

Ошибка объявления

EAGAIN

Больше нет процессов

EBADF

Неправильный номер файла

EBADMSG

Неправильное сообщение

EBUSY

Устройство или ресурс заняты

ECHILD

Нет потомков

ECOMM

Ошибка коммуникации

EDEADLK

Тупик

EEXIST

Файл существует

EDOM

Математический аргумент

EFAULT

Неправильный адрес

EFBIG

Слишком большой файл

EIDRM

Идентификатор удален

EINTR

Прерывание

EINVAL

Неправильный аргумент

EIO

Ошибка ввода/вывода

EISDIR

Это директория

ELIBACC

Нет доступа к совместно используемой библиотеке

ELIBBAD

Доступ к поврежденной совместно используемой библиотеке

ELIBEXEC

Нельзя прямо выполнить совместно используемую библиотеку

ELIBMAX

Попытка линковать больше совместно используемых библиотек, чем
разрешает ОС

ELIBSCN

Секция .LIB в A.OUT повреждена

EMFILE

Слишком много открытых файлов

EMLINK

Слишком много связей

EMULTIHOP

Прямая передача невозможна

ENFILE

Таблица файлов переполнена

ENODEV

Нет такого устройства

ENOENT

Нет такого файла или директории

ENOEXEC

Ошибочный формат исполнимого файла

ENOLCK

NO LOCK

ENOLINK

Виртуальный канал уничтожен

ENOMEM

Недостаточно места

ENOMSG

Нет сообщений желаемого типа

ENONET

Машина не в сети

ENOPKG

Нет пакета

ENOSPC

Не осталось места на устройстве

ENOSR

Нет ресурсов для потока

ENOSTR

Не поток

ENOTBLK

Требуется блочное устройство

ENOTDIR

Не директория

ENOTTY

Не символьное устройство

ENXIO

Нет такого устройства или адреса

EPERM

Не владелец

EPIPE

Канал неисправен

EPROTO

Ошибка протокола

ERANGE

Результат слишком велик

EREMOTE

Ресурс недоступен

EROFS

Файловая система только для чтения

ESPIPE

Неверный поиск

ESRCH

Нет такого процесса

ESRMNT

Ошибка srmount

ETIME

Таймаут при ioctl для потока

ETXTBSY

Текстовый файл занят

EXDEV

Ссылка между различными устройствами

Стандарт ANSI требует наличия функции strerror, но не
определяет строки, выдаваемые по каждому номеру ошибки.

Хотя эта реализация strerror допускает повторное вхождение,
ANSI C указывает, что последовательные вызовы strerror могут
переписывать выдаваемую строку; Таким образом переносимая программа не
должна зависеть от повторной входимости этой процедуры.

strerror не требует никаких процедур ОС.

API function docs

int utf8casecmp(const void *src1, const void *src2);

Return less than 0, 0, greater than 0 if , ,
respectively, case insensitive.

void *utf8cat(void *dst, const void *src);

Append the utf8 string onto the utf8 string .

void *utf8chr(const void *src, long chr);

Find the first match of the utf8 codepoint in the utf8 string .

int utf8cmp(const void *src1, const void *src2);

Return less than 0, 0, greater than 0 if ,, respectively.

void *utf8cpy(void *dst, const void *src);

Copy the utf8 string onto the memory allocated in .

size_t utf8cspn(const void *src, const void *reject);

Number of utf8 codepoints in the utf8 string that consists entirely
of utf8 codepoints not from the utf8 string .

void *utf8dup(const void *src);

Duplicate the utf8 string by getting its size, ing a new buffer
copying over the data, and returning that. Or 0 if failed.

size_t utf8len(const void *str);

Number of utf8 codepoints in the utf8 string ,excluding the null terminating byte.

int utf8ncasecmp(const void *src1, const void *src2, size_t n);

Return less than 0, 0, greater than 0 if , , respectively, case insensitive. Checking at most
bytes of each utf8 string.

void *utf8ncat(void *dst, const void *src, size_t n);

Append the utf8 string onto the utf8 string ,
writing at most bytes. Can produce an invalid utf8
string if falls partway through a utf8 codepoint.

int utf8ncmp(const void *src1, const void *src2, size_t n);

Return less than 0, 0, greater than 0 if ,, respectively. Checking at most
bytes of each utf8 string.

void *utf8ncpy(void *dst, const void *src, size_t n);

Copy the utf8 string onto the memory allocated in .
Copies at most bytes. If there is no terminating null byte in
the first bytes of , the string placed into will not be
null-terminated. If the size (in bytes) of is less than ,
extra null terminating bytes are appended to such that at
total of bytes are written. Can produce an invalid utf8
string if falls partway through a utf8 codepoint.

void *utf8pbrk(const void *str, const void *accept);

Locates the first occurence in the utf8 string of any byte in the
utf8 string , or 0 if no match was found.

void *utf8rchr(const void *src, int chr);

Find the last match of the utf8 codepoint in the utf8 string .

size_t utf8size(const void *str);

Number of bytes in the utf8 string ,
including the null terminating byte.

size_t utf8spn(const void *src, const void *accept);

Number of utf8 codepoints in the utf8 string that consists entirely
of utf8 codepoints from the utf8 string .

void *utf8str(const void *haystack, const void *needle);

The position of the utf8 string in the utf8 string .

void *utf8casestr(const void *haystack, const void *needle);

The position of the utf8 string in the utf8 string ,
case insensitive.

void *utf8valid(const void *str);

Return 0 on success, or the position of the invalid utf8 codepoint on failure.

void *utf8codepoint(const void *str, long *out_codepoint);

Sets out_codepoint to the next utf8 codepoint in ,
and returns the address of the utf8 codepoint after the current one in .

utf8_weak size_t utf8codepointsize(utf8_int32_t chr);

Returns the size of the given codepoint in bytes.

utf8_nonnull utf8_weak void *utf8catcodepoint(void *utf8_restrict str,
                                              utf8_int32_t chr, size_t n);

Write a codepoint to the given string, and return the address to the next
place after the written codepoint. Pass how many bytes left in the buffer to
n. If there is not enough space for the codepoint, this function returns
null.

Returns 1 if the given character is lowercase, or 0 if it is not.

utf8_weak int utf8isupper(utf8_int32_t chr);

Returns 1 if the given character is uppercase, or 0 if it is not.

utf8_nonnull utf8_weak void utf8lwr(void *utf8_restrict str);

Transform the given string into all lowercase codepoints.

utf8_nonnull utf8_weak void utf8upr(void *utf8_restrict str);

Transform the given string into all uppercase codepoints.

utf8_weak utf8_int32_t utf8lwrcodepoint(utf8_int32_t cp);

Make a codepoint lower case if possible.

utf8_weak utf8_int32_t utf8uprcodepoint(utf8_int32_t cp);

Make a codepoint upper case if possible.

Функции

Имя Примечания
копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат не определён (возможно как правильное копирование, так и нет)
копирует n байт из области памяти src в dest, которые в отличие от могут перекрываться
возвращает указатель на первое вхождение значения c среди первых n байтов s или NULL, если не найдено
сравнивает первые n символов в областях памяти
заполняет область памяти одним байтом z
дописывает строку src в конец dest
дописывает не более n начальных символов строки src (или всю src, если её длина меньше) в конец dest
возвращает адрес символа c в строке s, начиная с головы, или NULL, если строка s не содержит символ c
возвращает адрес символа c в строке s, начиная с хвоста, или NULL, если строка s не содержит символ c
лексикографическое сравнение строк (возвращает «0», если строки одинаковые, положительное, если первая строка больше, и отрицательное, если меньше)
лексикографическое сравнение первых n байтов строк
лексикографическое сравнение строк с учетом локали collating order
копирует строку из одного места в другое
копирует до n байт строки из одного места в другое
возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная)
возвращает длину строки
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject
находит первое вхождение любого символа, перечисленного в accept
находит первое вхождение строки needle в haystack
преобразует строку в последовательность токенов. Не потоко-безопасная, не реентерабельная.
создает оттранслированную копию строки, такую, что дословное сравнение её (strcmp) будет эквивалентно сравнению с коллатором.

Расширения к ISO C

Имя Примечания Определена в
создает копию строки и возвращает указатель на неё POSIX; первоначально расширение в BSD
вариант с контролем границ ISO/IEC WDTR 24731
вариант с возвратом байта, следующего за последним записанным GNU
копирует до n байт из одной области памяти в другую (не должны пересекаться), останавливаясь при встрече символа c UNIX 98?
возвращает строкое представление кода ошибки errno (потоко-безопасная; небольшая разница в семантике между GNU и XSI/POSIX) GNU, POSIX
вариант с контролем границ первоначально OpenBSD, теперь также FreeBSD, Solaris, Mac OS X
потоко-безопасная реентерабельная версия strtok POSIX
по аналогии с , возвращает строковое представление сигнала (не потоко-безопасная) BSDs, Solaris, Linux

4.26 strtok — получает следующую лексему из строки

Сначала strtok ищет знак, не содержащийся в строке delimiters:
первый такой знак является началом лексемы (и его адрес возвращается в
качестве результата вызова strtok). Затем strtok продолжает поиск,
пока не находит другой знак-разделитель, который заменяется на NULL,
после чего работа функции заканчивается. (Если strtok приходит к концу
строки *source не найдя еще одного разделителя, то весь остаток строки
рассматривается как следующая лексема). strtok начинает поиск в
*source, если только NULL не был передан в качестве первого аргумента;
если source — NULL, то strtok продолжает искать от того места, где
закончился предыдущий поиск. Использование NULL как пеpвого аpгyмента
ведет к кодy, недопyскающемy повтоpного вхождения. Эта проблема может
быть легко решена путем сохранения адреса последнего разделителя в
приложении и передачей не-NULL в качестве аргумента source.

_strtok_r выполняет те же функции, что и strtok, но является
функцией повторного вхождения. Дополнительный аргумент reent —
указатель на структуру, содержащую информацию для обеспечения
повторной входимости.

strtok возвращает yказатель на следующую лексему, или NULL,
если больше не найдено ни одной лексемы.

Стандарт ANSI требует наличия функции strtok.

strtok не требует никаких процедур ОС.

Functions[edit]

Name Notes
copies n bytes between two memory areas; if there is overlap, the behavior is undefined
copies n bytes between two memory areas; unlike with the areas may overlap
returns a pointer to the first occurrence of c in the first n bytes of s, or NULL if not found
compares the first n bytes of two memory areas
overwrites a memory area with n copies of c
appends the string src to dest
appends at most n bytes of the string src to dest
locates byte c in a string, searching from the beginning
locates byte c in a string, searching from the end
compares two strings lexicographically
compares up to the first n bytes of two strings lexicographically
compares two strings using the current locale’s collating order
copies a string from one location to another
write exactly n bytes to dest, copying from src or add 0’s
returns the string representation of an error number e.g. errno (not thread-safe)
finds the length of a C string
determines the length of the maximal initial substring consisting entirely of bytes in accept
determines the length of the maximal initial substring consisting entirely of bytes not in reject
finds the first occurrence of any byte in accept
finds the first occurrence of the string «needle» in the longer string «haystack»
parses a string into a sequence of tokens; non-thread safe in the spec, non-reentrant
transforms src into a collating form, such that the numerical sort order of the transformed string is equivalent to the collating order of src

Extensions to ISO Cedit

Name Notes Specification
copies up to n bytes between two memory areas, which must not overlap, stopping when the byte c is found SVID, POSIX
variant of returning a pointer to the byte following the last written byte GNU
bounds-checked variant of ISO/IEC WDTR 24731
bounds-checked variant of ISO/IEC WDTR 24731
allocates and duplicates a string into memory POSIX; originally a BSD extension
Puts the result of strerror() into the provided buffer in a thread-safe way. POSIX:2001
Return strerror() in a thread-safe way. The provided buffer is used only if necessary (incompatible with POSIX version). GNU
bounds-checked variant of originally OpenBSD, now also FreeBSD, Solaris, Mac OS X
bounds-checked variant of originally OpenBSD, now also FreeBSD, Solaris, Mac OS X
by analogy to , returns string representation of the signal (not thread safe) POSIX:2008
thread-safe and reentrant version of strtok POSIX

Функции

Имя Примечания
копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат не определён (возможно как правильное копирование, так и нет)
копирует n байт из области памяти src в dest, которые в отличие от могут перекрываться
возвращает указатель на первое вхождение значения c среди первых n байтов s или NULL, если не найдено
сравнивает первые n символов в областях памяти
заполняет область памяти одним байтом z
дописывает строку src в конец dest
дописывает не более n начальных символов строки src (или всю src, если её длина меньше) в конец dest
возвращает адрес символа c в строке s, начиная с головы, или NULL, если строка s не содержит символ c
возвращает адрес символа c в строке s, начиная с хвоста, или NULL, если строка s не содержит символ c
лексикографическое сравнение строк (возвращает «0», если строки одинаковые, положительное, если первая строка больше, и отрицательное, если меньше)
лексикографическое сравнение первых n байтов строк
лексикографическое сравнение строк с учетом локали collating order
копирует строку из одного места в другое
копирует до n байт строки из одного места в другое
возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная)
возвращает длину строки
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept
определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject
находит первое вхождение любого символа, перечисленного в accept
находит первое вхождение строки needle в haystack
преобразует строку в последовательность токенов. Не потоко-безопасная, не реентерабельная.
создает оттранслированную копию строки, такую, что дословное сравнение её (strcmp) будет эквивалентно сравнению с коллатором.

Расширения к ISO C

Имя Примечания Определена в
создает копию строки и возвращает указатель на неё POSIX; первоначально расширение в BSD
вариант с контролем границ ISO/IEC WDTR 24731
вариант с возвратом байта, следующего за последним записанным GNU
копирует до n байт из одной области памяти в другую (не должны пересекаться), останавливаясь при встрече символа c UNIX 98?
возвращает строкое представление кода ошибки errno (потоко-безопасная; небольшая разница в семантике между GNU и XSI/POSIX) GNU, POSIX
вариант с контролем границ первоначально OpenBSD, теперь также FreeBSD, Solaris, Mac OS X
потоко-безопасная реентерабельная версия strtok POSIX
по аналогии с , возвращает строковое представление сигнала (не потоко-безопасная) BSDs, Solaris, Linux
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector