strcat_s
char szBuf[3] = {0};
strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法
strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法
对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.
而用第一个函数则不同,它会抛出一个异常。
但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常
strcat
strcat_s
char szBuf[3] = {0};
strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法
strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法
对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.
而用第一个函数则不同,它会抛出一个异常。
但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常
strcat
strcat_s
char szBuf[3] = {0};
strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法
strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法
对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.
而用第一个函数则不同,它会抛出一个异常。
但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常
必须提一提 strcat 函数了。
char strcat( char str1, const char *str2 );
功能:函数将字符串str2 连接到str1的末端,并返回指针str1
str1 和 str2 不能 overlap,同时,必须保证 str1 有足够的空间
include <stdio.h>
include <string.h>
void strlink(char *lhs, const char *rhs)
{
while(*lhs != '\0')
{
++ lhs;
}
while(*rhs != '\0')
{
lhs++ = *rhs ++;
}
lhs = *rhs;
}
void main()
{
char *result = new char[20];
strcpy(result, "hello_");
strlink(result, "world");
printf("%s\n", result);
delete []result;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。