头文件:#include<string.h>
功能:连接两个字符串
函数原型:char *strcat(char *dest, const char *src);
注意事项:dest需要足够大的空间容纳拼接后的字符串
代码示例1:错误的用法,空间分配不足
#include<iostream>
#include<vector>
#include<string.h>
#define _CRT_SECURE_NO_DEPRECATE // vs2017中屏蔽警告
#pragma warning(disable:4996)
using namespace std;
int main()
{
char a[10] = "hello";
char b[6] = "world";
strcat(a, b);
cout << a << endl;
system("pause");
return 0;
}
运行结果:引发中断。
解释:字符串数组a与b拼接后的长度为11(字符个数+1个结束符’\0’),显然字符数组的长度不够。
代码示例2:正确用法
#include<iostream>
#include<vector>
#include<string.h>
#define _CRT_SECURE_NO_DEPRECATE
#pragma warning(disable:4996)
using namespace std;
int main()
{
char a[11] = "hello";
char b[6] = "world";
strcat(a, b);
cout << a << endl;
system("pause");
return 0;
}
运行结果:
解释:此时字符数组的长度刚好够,在拼接时,a中的结束符被覆盖,并且在拼接后的字符串最后重新加上结束符。
PS:c语言中的字符串与字符数组的关系又搞忘了。
贴个链接:
字符数组和字符串的区别,C语言字符数组和字符串区别详解