c++ strcpy和strcpy_S
时间: 2023-11-06 16:01:11 浏览: 143
strcpy()和strcpy_s()都是C语言中的字符串赋值函数。它们的功能几乎相同,都是将一个字符串复制到另一个字符串数组中。然而,它们之间存在一些区别。
1. 参数个数不同:strcpy()只有两个参数,第一个参数是目标字符串的地址,第二个参数是源字符串的地址。而strcpy_s()可以有两个或三个参数。当有三个参数时,第一个参数是目标字符串的地址,第二个参数是目标字符串的长度(要足够大以容纳源字符串),第三个参数是源字符串的地址。
2. 安全性:strcpy()无法保证目标缓冲区的大小,在使用时必须确保目标缓冲区足够大。而strcpy_s()可以避免这个问题,可以指定目标缓冲区的尺寸,确保不会发生缓冲区溢出。
3. 使用前提:在使用strcpy_s()函数之前,必须添加#include <cstring>头文件。
示例代码如下:
#include <iostream>
#include <cstring>
int main() {
char str1[20];
char str2[20];
std::cout << "Please enter str2: ";
std::cin.get(str2, 20);
strcpy_s(str1, str2);
std::cout << "str1 is \"" << str1 << "\".\n";
char* str;
str = new char[20];
strcpy_s(str, strlen(str1) + 1, str1);
std::cout << "str is \"" << str << "\".\n";
return 0;
}
阅读全文