strcat函数
作用
把两个char类型数组连起来。
赋值
默认接到第一个字符串中,可以自己赋值给另一个字符串。
原型
extern char *strcat(char *dest, const char *src);
头文件
在C语言中存在于<string.h>头文件中。
在C++则存在于<cstring>头文件中。
注意
1.
目标字符数组必须足够大,大到能容纳另一个字符串。
2.
两个字符数组不能重叠
代码实战
#include <iostream>
#include <cstring>
#include <cstdlib>
int main()
{
using namespace std;
char d[20] = "GoldenGlobal";
char* s = "View";
strcat(d,s);
cout << d << endl;
system("pause");
return 0;
}
输出: GoldenGlobalView
strcpy函数
用途
复制另一个字符数组
赋值
strcpy(a,b),把b复制到a
原型
char *strcpy(char *dest, const char *src)
头文件
#include <cstring>
注意
strcpy 函数中的缓冲区溢出问题
缓冲区的溢出就是程序在动态分配的缓冲区中写入了太多的数据,使这个分配区发生了溢出。一旦一个缓冲区利用程序能将运行的指令放在有 root权限的内存中,运行这些指令,就可以利用 root 权限来控制计算机了。
当程序编写时,加入错误检查,可以及时地发现错误,并处理出现的异常。当写strcpy函数时,首先要尽可能地使目的缓冲区的长度足够长,以及检测目的缓冲和源缓冲。若目标缓冲区或源缓冲区为空,则程序在异常处理中终止。
若源字符串没有目的的缓冲区长度长,还应在异常处理中结束程序,以避免发生溢出情况。很难说,没有一个程序绝对安全,strcpy函数只能使用尽可能安全的方法。函数将在任何时候结束,只要输入的字符串没有空格结束。这个探测很容易。但这种探测并不能保证该功能的安全性。
代码实战
#include<bits/stdc++.h>
using namespace std;
int main()
{
char src[40];
char dest[100];
memset(dest, '\0', sizeof(dest));
strcpy(src, "taoyiwei17_QFOI");
strcpy(dest, src);
printf("%s\n", dest);
return 0;
}
输出:taoyiwei17_QFOI
DAY 5 学习日记
dp第二讲,下次开个专栏讲dp(话说进制转换的坑我还没填的)