C/C++中strcpy()和strdup()的区别及使用

strcpy和strdup都是C/C++语言字符串库中的方法,头文件是string.h。strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现。strcpy是C语言标准库函数,实现字符串复制的功能。两者的用法基本相同,但是在使用strdup就很容易出现坑。

strcpy(s1,s2)

功能:复制字符串 s2 到字符串 s1。
返回值:返回字符串 s1 的起始位置
说明:如果字符串 s1 的内存空间不够大,可能会造成缓冲溢出的情况,所以字符串 s1 的长度必须大于或等于字符串 s2 的长度。且复制完后其 s2 的内容将覆盖 s1 的内容。

#include 
using namespace std;
#include 
int main(int argc,  char* argv[])
{
	char s1[20] = "hello";
	char s2[20] = "world";
	strcpy(s1 ,s2);
	cout << "strcpy(s1 ,s2) = " << s1 << endl;  //输出为 s2 覆盖 s1 的内容
	return 0;
}

extern char *strdup(char *s);

功能:将字符串拷贝到新建的位置上。
返回值:返回一个指针,指向字符串分配的空间;如果分配空间失败,返回NULL
说明:strdup()是在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。

#include 
using namespace std;
#include 
int main(int argc,  char* argv[])
{

        char *t = “hello,world”;
        char *s = NULL;
        strcpy(t, s);
        cout << t << endl;
        return 0;
}  

你可能感兴趣的:(C++)