c语言 strncat,strncat - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义(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中文网相关推荐
- php中的lc_time,LC_TIME - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义#define LC_ALL / *实现定义* / #define LC_COLLATE / *实现定义* / #define LC_CTYPE / *实现定义* / #define L ...
- cbrt c语音_isgraph - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义int isgraph(int ch); 检查给定字符是否具有图形表示形式,即它是数字(0123456789),大写字母(ABCDEFGHIJKLMNOPQRSTUVWXYZ),小写字母 ...
- c 语言memmove,memmove - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义void * memmove(void * dest,const void * src,size_t count);(1) errno_t memmove_s(void * dest,r ...
- c语言fsetpos是什么,fsetpos - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义int fsetpos(FILE * stream,const fpos_t * pos); stream根据指向的值设置文件流的文件位置指示符和多字节解析状态(如果有)pos. 除了建 ...
- c语言中mw shl code,cacoshl - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义float complex cacoshf( float complex z );(1)(since C99) double complex cacosh( dou ...
- php vprintf,vprintf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
格式-指向以空字符结尾的字符串的指针,指定如何解释数据.格式字符串由普通的多字节字符(%除外)组成,它们被原样复制到输出流和转换规范中.每个转换规范具有以下格式:介绍%字符(可选)一个或多个标志,用于 ...
- c语言L文件,frexpl - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义float frexpf(float arg,int * exp);(1)(自C99以来) double frexp(double arg,int * exp);(2) long dou ...
- c语言isfinite_csqrtf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义float complex csqrtf(float complex z);(1)(自C99以来) double complex csqrt( double complex z ); ...
- php atan2,atan2l - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
在头文件中定义float atan2f( float y, float x );(1)(since C99) double atan2( double y, double x ) ...
最新文章
- android矢量动画 充电,android矢量动画
- 【scratch】实用作品方案:微信抽奖机,Scratch编程教育作品
- 值得研究的 开源数据库
- 用#ifndef、#define、#endif避免头文件的重定义
- ug导出step文件失败_解决UG导出CAD图纸失败的问题
- 【JavaScript】JS的变量、数组、计算器案例、函数、类、常用对象的方法
- 模块化 JS Ajax 请求
- [C++11]对模板右尖括号的优化
- 计算机专业性特有的道德要求,什么是通信科学技术人员职业道德的双重性?
- 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...
- Android系统性能优化(56)---APP性能优化
- 【前排选手分享】初赛尾声将至,大神带你最后一搏!
- centos php编译,深入讲解CentOS PHP安装编译
- 分布式事务的四种解决方案,值得参考!
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
- 【语音识别】基于matlab GUI声纹识别【含Matlab源码 1022期】
- sqlyog简单入门使用
- win 7 虚拟机VMware Tools安装
- 扇贝编程python学习笔记-基础篇3
- Oracle闪回技术详解
热门文章
- Section 2.8: CODDING CHALLENGE 3
- 【LADRC】线性自抗扰控制
- conda 添加中科大源
- 【题库】上海市学校心理咨询师考试基础题库-普通心理学
- 文本生成 计算机语言,自然语言处理 -- 文本生成概述
- 【Midjourney】Midjourney Prompt 提示词 ② ( 怀旧像素风 | 物体 A 被物体 B 包围 | 折纸艺术风格 )
- Win10强制更新禁不掉的解决方法
- java实现输入一个任意十进制数转换为二进制数
- 树形表格treeTable插件实现固定列功能
- termux运行python文件知乎_termux 笔记