首页技术strcat s(strcat参数size)

strcat s(strcat参数size)

编程之家2026-05-291074次浏览

大家好,今天小编来为大家解答strcat s这个问题,strcat参数size很多人还不知道,现在让我们一起来看看吧!

strcat s(strcat参数size)

c++ strcpy_s和strcat_s

strcat_s和strcpy_s的第二个参数都是说明第一个字符串所容纳的字符个数,所以

我理解的strcat_s第二个参数应该是csName可以容纳的长度,如果_T("456")改成一个长度大于17的值,那么上面这句话不就溢出了么?

是大于等于17都会溢出(^_^还有个字符串结尾标志也算一个字符!)

strcat_s之类的函数的目的就是消除长久以来的字符串溢出的问题,所以设置第二个参数只是告诉操作的的时候需要处理的字符个数,并不会检查目标串可容纳的字符长度。(因为并不一定可以得知目标串的长度,比如你用malloc分配了一块内存,然后用一个字符串指针指向该内存,但是你不能知道这块内存有多大。)

eg:

#define N 20

strcat s(strcat参数size)

...

char szName[N];//语句1

strcpy_s(szName,n1,_T("123"));//语句2

strcat_s(szName,n2,_T("add"));//语句3

N=20,n1=20时

若n2<7,调试出错,但这不是溢出出错,而是因为调用strcat_s时操作的字符数(7)大于n1所以出错,相当于strcat_s抛出溢出或者说strcat_s的断言(ASSERT)为假。

strcat s(strcat参数size)

若20>n2>7,而源字符串的长度合适,就不会出错

若n>20,读取内存错误,溢出错误

N=10时

若n1<10,源字符串长度合适,不会出错。

二n1>10,不管字源符串长度是多长,都会出错,但是这是属于读取内存出错,属于溢出类型的出错。

总结一下:

xxxxxx_s这样的函数的第二个参数的意义是告诉操作系统目标串可以容纳多少个字符,但是并不会真正检查目标串可以容纳多少个字符,设置这样的目的是因为程序员一般知道是多少个,或者使用sizeof来获取字符串的大小即可。

stract词根的意思是什么

C函数

原型

extern char*strcat(char*dest, const char*src);

用法

#include<string.h>

头文件

在C中,函数原型存在<string.h>头文件中。

在C++中,则存在于<cstring>头文件中。

功能

把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。要保证*dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。

将两个char类型连接。

例如:

char d[20]="Golden";

char s[20]="View";

strcat(d,s);

//打印d

printf("%s",d);

输出 d为 GoldenView(中间无空格)

d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。

返回指向d的指针。

strcat函数的作用是

strcat函数的作用是将两个char类型连接。

例如:

char d[20]="Golden";

char s[20]="View";

strcat(d,s);

//打印d

printf("%s",d);

输出 d为 GoldenView(中间无空格)

d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。

返回指向d的指针。

扩展资料

在C中,函数原型存在<string.h>头文件中。

在C++中,则存在于<cstring>头文件中。

把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。要保证*dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

关于strcat s到此分享完毕,希望能帮助到您。

织梦cms怎么搭建网站(搭建一个网站的流程)个人网站 如何搭建个人网站