在头文件中定义(1)

char * strncat(char * dest,const char * src,size_t count);(直到C99)

char * strncat(char * restrict dest,const char * restrict src,size_t count);(自C99以来)

errno_t strncat_s(char * restrict dest,rsize_t destsz,const char * restrict src,rsize_t count);(2)(自C11以来)

1)追加由src指向的字符数组中的大多数计数字符,如果找到空字符,则停止到由dest指向的以null结尾的字节字符串的末尾。 字符src [0]替换dest结尾处的空终止符。 终止空字符总是附加在最后(因此函数可以写入的最大字节数为count + 1)。

如果目标数组没有足够的空间用于dest和src的第一个计数字符的内容以及终止的空字符,则行为未定义。 如果源和目标对象重叠,则行为未定义。 如果dest不是指向以空字符结尾的字节字符串的指针,或者src不是指向字符数组的指针,则行为未定义.

2)与(1)相同,只是此函数可能会打断目标数组的其余部分(从写入到destsz的最后一个字节开始),并且在运行时检测到以下错误并调用当前安装的约束处理函数:

src或者dest是空指针

destsz或者count是零或大于RSIZE_MAX

在第一个destsz字节中没有空字符dest

则会发生截断:count或者src较小者的长度超过了dest和destsz的空终止符之间的可用空间。

源和目标字符串之间会发生重叠

如果由dest

参数

dest-指向要附加到的以空字符结尾的字节字符串SRC-指向要复制的字符数组的指针

count-最大数量的字符复制

destsz-目标缓冲区的大小

返回值

1)返回 dest 副本

2)在成功时返回零,错误时返回非零值。 另外,如果发生错误,则将零写入dest [0](除非dest是空指针或destsz为零或大于RMAX_SIZE)。

注意

尽管适合目标缓冲区的截断存在安全风险,并且因此违反了strncat_s的运行时间约束,但可以通过指定count等于目标数组的大小减1来获得截断行为:它将复制第一个计数字节和 像往常一样添加空终止符:strncat_s(dst,sizeof dst,src,(sizeof dst)-strnlen_s(dst,sizeof dst)-1);

#define __STDC_WANT_LIB_EXT1__ 1#include  #include #include

int main(void) {

char str[50] = "Hello ";

char str2[50] = "World!";    strcat(str, str2);    strncat(str, " Goodbye World!", 3);    puts(str);

#ifdef __STDC_LIB_EXT1__    set_constraint_handler_s(ignore_handler_s);

char s1[100] = "good";

char s5[1000] = "bye";

int r1 = strncat_s(s1, 100, s5, 1000); // r1 is 0, s1 holds "goodbye\0"    printf("s1 = %s, r1 = %d\n", s1, r1);

char s2[6] = "hello";

int r2 = strncat_s(s2, 6, "", 1); // r2 is 0, s2 holds "hello\0"    printf("s2 = %s, r2 = %d\n", s2, r2);

char s3[6] = "hello";

int r3 = strncat_s(s3, 6, "X", 2); // r3 is non-zero, s3 holds "\0"    printf("s3 = %s, r3 = %d\n", s3, r3);    // the strncat_s truncation idiom:

char s4[7] = "abc";

int r4 = strncat_s(s4, 7, "defghijklmn", 3); // r is 0, s4 holds "abcdef\0"    printf("s4 = %s, r4 = %d\n", s4, r4);#endif}

可能的输出:

Hello World! Go

s1 = goodbye, r1 = 0s2 = hello, r2 = 0s3 = , r3 = 22s4 = abcdef, r4 = 0

参考

C11标准(ISO / IEC 9899:2011):7.24.3.2 strncat函数(p:364-365)

K.3.7.2.2 strncat_s函数(p:618-620)

C99标准(ISO / IEC 9899:1999):7.21.3.2 strncat函数(p:327-328)

C89 / C90标准(ISO / IEC 9899:1990):4.11.3.2 strncat函数

扩展内容

strcatstrcat_s(C11)连接两个字符串(函数)strcpystrcpy_s(C11)将一个字符串复制到另一个(函数)

在头文件中定义int iswdigit(wint_t ch);(自C95以来)

检查给定的宽字符是否对应(如果缩小)十个十进制数字字符0123456789中的一个。

参数

CH-宽字符

返回值

如果宽字符是数字字符,则为非零值,否则为零。

注意

iswdigit与iswxdigit是唯一不受当前安装的C语言环境影响的标准宽字符分类函数。

一些语言环境提供了检测非ASCII数字的附加字符类。

#include #include #include #include  void test(wchar_t a3, wchar_t u3, wchar_t j3){    printf("        '%lc' '%lc' '%lc'\n", a3, u3, j3);    printf("iswdigit %d    %d   %d\n",           !!iswdigit(a3), !!iswdigit(u3), !!iswdigit(j3));    printf("jdigit:  %d    %d   %d\n", !!iswctype(a3, wctype("jdigit")),          !!iswctype(u3, wctype("jdigit")),          !!iswctype(j3, wctype("jdigit")));}

int main(void){

wchar_t a3 = L'3';  // the ASCII digit 3

wchar_t u3 = L'三'; // the CJK numeral 3

wchar_t j3 = L'3'; // the fullwidth digit 3

setlocale(LC_ALL, "en_US.utf8");    puts("In American locale:");    test(a3, u3, j3);

setlocale(LC_ALL, "ja_JP.utf8");    puts("\nIn Japanese locale:");    test(a3, u3, j3);}

输出:

In American locale:        '3' '三' '3'iswdigit 1    0   0jdigit:  0    0   0

In Japanese locale:        '3' '三' '3'iswdigit 1    0   0jdigit:  0    0   1

参考

C11标准(ISO / IEC 9899:2011):7.30.2.1.5 iswdigit函数(p:449)

C99标准(ISO / IEC 9899:1999):7.25.2.1.5 iswdigit函数(p:395)

扩展内容

isdigit检查一个字符是否是一个数字(功能)

| 用于iswdigit的C ++文档 |

ASCII 值  (十六进制)字符iscntrl  iswcntrl.isprint  iswprint.isspace  iswspace.isblank  iswblank.isgraph  iswgraph.ispunct  iswpunct.isalnum  iswalnum.isalpha  iswalpha.isupper  iswupper.islower  iswlower.isdigit  iswdigit.isxdigit  iswxdigit.0 - 80x00-0x08控制码 (NUL, etc.)≠000000000000

90x09tab (\t)≠00≠0≠000000000

10 - 130x0A-0x0D空格 (\n,\v,\f,\r)≠00≠0000000000

14 - 310x0E-0x1F控制码≠000000000000

320x20space0≠0≠0≠000000000

33 - 470x21-0x2F!"#$%&'()*+,-./0≠000≠0≠0000000

48 - 570x30-0x3901234567890≠000≠00≠0000≠0≠0

58 - 640x3a-0x40:;<=>?@0≠000≠0≠0000000

65 - 700x41-0x46ABCDEF0≠000≠00≠0≠0≠000≠0

71 - 900x47-0x5AGHIJKLMNOPQRSTUVWXYZ0≠000≠00≠0≠0≠0000

91 - 960x5B-0x60[]^_` | 0 | ≠0 | 0 | 0 | ≠0 | ≠0 | 0 | 0 | 0 | 0 | 0 | 0 |

97 -1020x61-0x66abcdef0≠000≠00≠0≠00≠00≠0

103-1220x67-0x7Aghijklmnopqrstuvwxyz0≠000≠00≠0≠00≠000

123-1260x7B-0x7E{|}~0≠000≠0≠0000000

1270x7F退格 (DEL)≠000000000000

c语言 strncat,strncat - [ C语言中文开发手册 ] - 在线原生手册 - php中文网相关推荐

  1. php中的lc_time,LC_TIME - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义#define LC_ALL / *实现定义* / #define LC_COLLATE / *实现定义* / #define LC_CTYPE / *实现定义* / #define L ...

  2. cbrt c语音_isgraph - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义int isgraph(int ch); 检查给定字符是否具有图形表示形式,即它是数字(0123456789),大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ),小写字母 ...

  3. c 语言memmove,memmove - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义void * memmove(void * dest,const void * src,size_t count);(1) errno_t memmove_s(void * dest,r ...

  4. c语言fsetpos是什么,fsetpos - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义int fsetpos(FILE * stream,const fpos_t * pos); stream根据指向的值设置文件流的文件位置指示符和多字节解析状态(如果有)pos. 除了建 ...

  5. c语言中mw shl code,cacoshl - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义float complex       cacoshf( float complex z );(1)(since C99) double complex      cacosh( dou ...

  6. php vprintf,vprintf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    格式-指向以空字符结尾的字符串的指针,指定如何解释数据.格式字符串由普通的多字节字符(%除外)组成,它们被原样复制到输出流和转换规范中.每个转换规范具有以下格式:介绍%字符(可选)一个或多个标志,用于 ...

  7. c语言L文件,frexpl - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义float frexpf(float arg,int * exp);(1)(自C99以来) double frexp(double arg,int * exp);(2) long dou ...

  8. c语言isfinite_csqrtf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义float complex csqrtf(float complex z);(1)(自C99以来) double complex   csqrt( double complex z ); ...

  9. php atan2,atan2l - [ C语言中文开发手册 ] - 在线原生手册 - php中文网

    在头文件中定义float       atan2f( float y, float x );(1)(since C99) double      atan2( double y, double x ) ...

最新文章

  1. android矢量动画 充电,android矢量动画
  2. 【scratch】实用作品方案:微信抽奖机,Scratch编程教育作品
  3. 值得研究的 开源数据库
  4. 用#ifndef、#define、#endif避免头文件的重定义
  5. ug导出step文件失败_解决UG导出CAD图纸失败的问题
  6. 【JavaScript】JS的变量、数组、计算器案例、函数、类、常用对象的方法
  7. 模块化 JS Ajax 请求
  8. [C++11]对模板右尖括号的优化
  9. 计算机专业性特有的道德要求,什么是通信科学技术人员职业道德的双重性?
  10. 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...
  11. Android系统性能优化(56)---APP性能优化
  12. 【前排选手分享】初赛尾声将至,大神带你最后一搏!
  13. centos php编译,深入讲解CentOS PHP安装编译
  14. 分布式事务的四种解决方案,值得参考!
  15. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
  16. 【语音识别】基于matlab GUI声纹识别【含Matlab源码 1022期】
  17. sqlyog简单入门使用
  18. win 7 虚拟机VMware Tools安装
  19. 扇贝编程python学习笔记-基础篇3
  20. Oracle闪回技术详解

热门文章

  1. Section 2.8: CODDING CHALLENGE 3
  2. 【LADRC】线性自抗扰控制
  3. conda 添加中科大源
  4. 【题库】上海市学校心理咨询师考试基础题库-普通心理学
  5. 文本生成 计算机语言,自然语言处理 -- 文本生成概述
  6. 【Midjourney】Midjourney Prompt 提示词 ② ( 怀旧像素风 | 物体 A 被物体 B 包围 | 折纸艺术风格 )
  7. Win10强制更新禁不掉的解决方法
  8. java实现输入一个任意十进制数转换为二进制数
  9. 树形表格treeTable插件实现固定列功能
  10. termux运行python文件知乎_termux 笔记