strcpy_s函数两个参数和三个参数
看名字明白,它和strcpy()函数的功能应该一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。 这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。 三个参数时: errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource ); 两个参数时: errno_t strcpy_s( char (&strDestination)[size], const char *strSource ); // C++ only 例子: #include "stdafx.h" #include<iostream> #include<string.h> using namespace std; void Test(void) { char *str1=NULL; str1=new char[20]; char str[7]; strcpy_s(str1,20,"hello world");//三个参数 strcpy_s(str,"hello");//两个参数但如果:char *str=new char[7];会出错:提示不支持两个参数 cout<<"strlen(str1)"<<strlen(str1)<<"strlen(str)"<<strlen(str)<<endl; printf(str1);printf("\n"); cout<<str<<endl; } int _tmain(int argc, _TCHAR* argv[]) { Test(); return 0; } 输出为: strlen(str1): 11 strlen(str): 5 hello world hello |