一、函数功能
strcpy()与strcpy_s()都是字符串赋值函数,两者功能几乎一样,在C++中:
name = "ADAS"; // 错误
strcpy(Cstring, value); //正确
二、使用前提
使用strcpy()与strcpy_s()都是存在于头文件中的,所以程序一开始必须要有以下语句:
#include <cstring>
三、两者区别
- strcpy无法保证有效的缓冲区尺寸,只能确保使用了足够大的缓冲区,而strcpy_s则可以避免以上行为;
- strcpy只有两个参数,strcpy_s可以有两个参数也可以有三个参数;
- strcpy的使用需引入
using namespace std;
或者std::strcpy
,strcpy_s则不需要。
std::strcpy(str, str1);
strcpy_s(str, strlen(str1)+1, str1)
strcpy_s(str, str1)
四、示例
// strcpy.cpp -- test the strcpy function and strcpy_s function
#include "stdafx.h"
#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";
system("pause");
return 0;
}