Введение в класс 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
- The string functions use a lot of looping constructs. Is there some way to portably unravel the loops?
- 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 |