strxfrm()

Заменить часть строки другой строкой

Прототип:

#include <string.h>
size_t strxfrm( char *dst,
const char *src,
size_t n );

Аргументы:

dst
Строка, в которой будет производиться замена.
src
Строка с копируемым в dst фрагментом.
n
Максимальный размер копируемой строки.

Библиотека:

libc

Описание:

Функция strxfrm() копирует не более n символов из строки src в dst. При этом преобразовании учитывается действие setlocale() для обеспечения последующего корректного сравнения двух строк с использованием strncmp(). После преобразования результат вызова функции strcmp(), использующей параметр dst, будет совпадать с результатом вызова функции strcoll() для src.

Если сопоставление соответствует локали "C", strxfrm() функционирует аналогично strncpy(), за исключением того, что strxfrm() не дополняет dst завершающим нулевым символом в том случае, если src короче n.

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

Длина замененной строки. Если длина больше n (с учетом влияния на преобразование локали), контент массива dst не определен.


Note: В случае ошибки strxfrm() устанавливает errno и возвращает 0. С тех пор, как функция может вернуть 0 также и при успешном выполнении, единственным способом определить возникновение ошибки является предварительная установка errno в 0 перед вызовом strxfrm() и проверка его после этого.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
char src[] = { "A sample STRING" };
char dst[20];
int main( void )
{
size_t len;
setlocale( LC_ALL, "C" );
printf( "%s\n", src );
len = strxfrm( dst, src, 20 );
printf( "%s (%u)\n", dst, len );
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out A sample STRING A sample STRING (15)

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Да
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

setlocale(), strcoll(), wcsxfrm()




Предыдущий раздел: Описание API системной библиотеки