Заменить часть строки другой строкой
#include <string.h>size_t strxfrm( char *dst,const char *src,size_t n );
libc
Функция strxfrm() копирует не более n символов из строки src в dst. При этом преобразовании учитывается действие setlocale() для обеспечения последующего корректного сравнения двух строк с использованием strncmp(). После преобразования результат вызова функции strcmp(), использующей параметр dst, будет совпадать с результатом вызова функции strcoll() для src.
Если сопоставление соответствует локали "C", strxfrm() функционирует аналогично strncpy(), за исключением того, что strxfrm() не дополняет dst завершающим нулевым символом в том случае, если src короче n.
Длина замененной строки. Если длина больше n (с учетом влияния на преобразование локали), контент массива dst не определен.
В случае ошибки 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 системной библиотеки