当前位置: C语言 -- 标准库 -- <wchar.h> -- wcsncpy

wcsncpy函数


概要:
#include <wchar.h>
wchar_t *wcsncpy(wchar_t * restrict s1,
      const wchar_t * restrict s2,
      size_t n);

描述:

该函数从参数s2指向的数组复制不超过n个宽字符(空宽字符后面的字符不会被复制。)到参数s1指向的数组中。

如果参数s2指向的数组前n个宽字符中没有空宽字符,结果将没有终止空宽字符

如果参数s2指向的数组是一个比n个字符短的宽字符串,参数s1指向数组写入复制内容后将添加空宽字符,直至写入n个宽字符。

如果复制发生在重叠对象之间,函数行为是未定义的。

ISO/IEC 9899:2018标准定义了该函数的安全版本wcsncpy_s


参数:
wchar_t * restrict s1

指向目标数组的指针,复制宽字符将存入该数组。

const wchar_t * restrict s2

指向源数组的指针,从该数组复制宽字符。

size_t n

复制的最多宽字符数。


返回值:

函数返回s1的值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
/*函数wcsncpy范例*/

#include <locale.h>
#include <wchar.h>

int main(void)
{
    setlocale(LC_ALL, "");
    
    const wchar_t source[] = {L'', L'西', L'\0', L'', L'', L'', L'\0'};
    wchar_t destination[10];

    wcsncpy(destination, source, 5);
    for(int i=0; i<5; ++i)
    {
        if(destination[i] == 0)
            wprintf(L"空宽字符。\n");
        else
            wprintf(L"%lc\n", destination[i]);
    }
    
    return 0;
}


输出:

西

空宽字符。

空宽字符。

空宽字符。


相关内容:
wmemcpy 复制内存区域宽字符序列的函数。
wmemmove 移动内存区域宽字符序列的函数。
wcscpy 复制宽字符串的函数。