strcpy函数的作用是 strcpy函数的作用是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strcpy函数的作用是 strcpy函数的作用是啥相关的知识,希望对你有一定的参考价值。

参考技术A   strcpy是一种C语言的标准库函数,strcpy能把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。

  C 语言和 C++语言风格轻松、灵活,语法限制宽松,因而受到各类程序员的欢迎,是比较通用的编程语言,同时也是各大院校计算机专业的基本语言课程。strcpy 函数由于不对数组边界进行检查,而非常容易造成各种缓冲区溢出的漏洞。这些漏洞很容易被利用,而造成严重的系统问题。在使用 strcpy 函数时,要小心谨慎。

  在编程时,加入错误检查,就可及时发现错误,并且对出现的异常进行处理。在编写 strcpy 函数时,首先尽量使目的缓冲区长度足够长,另外要检测目的缓冲区和源缓冲区。如果目的缓冲区或源缓冲区是空,就要在异常处理中结束程序。如果,源字符串比目的缓冲区长度不长,也要在异常处理中结束程序,以防止出现溢出情况。任何程序都很难说是绝对安全,只能以尽可能安全的方式来处理 strcpy 函数。只要输入的字符串不以空字符结束,函数就会随时终止。这种检测容易实现。但是这样的检测也并不能确定函数一定安全。

strcpy函数用法

strcpy()是C中的一个复制字符串的库函数,在C++中现在编译器要求使用strcpy_s(),提高安全性,效果是一样的,只是防止源串的长度比目的串的长度大,导致最终的内存越界

函数声明及实现代码:

char* strcpy(char*dst, const char*src)
char* strcpy(char*dst, const char *src)
{
    if ((dst == NULL) || (src == NULL))
        return NULL;
    char *ret = dst;  //[1]
    while ((*dst ++= *src++) != ‘‘);   //[2]
        return ret;   //[3]
}

1)const 修饰:源字符串参数用const修饰,防止修改源字符串;

(2)空指针检查:源指针和目的指针都有可能会出现空指针的情况,所以应该对其进行检查;

(3)为什么要设置ret 指针以及返回ret指针的位置[3],由于目的指针dst已经在进行移动了,所以用辅助指针ret表明首指针;

(4)以上所示[2]处,为简单的字符串的复制过程,正好表明strcpy函数遇到‘‘将会停止;

(5) [3]处返回指针类型,是因为可以连续赋值,作为左值

在C++中strcpy运行时,会提示不安全,要想实现同样的功能,需要自己把该功能换一个名字实现相同的代码,调用strcpy_s时,类似于赋值,直接把目的字符串的换成了源字符串,目的字符串后面的字符无法再通过数组下标获取到,这点很奇怪,不知道是哪里出了问题?

以上是关于strcpy函数的作用是 strcpy函数的作用是啥的主要内容,如果未能解决你的问题,请参考以下文章

C语言中strcpy的用法! 要举例哦!简单的哦!

C++ - 使用 strcpy_s(s+2,s+3);不起作用 - “函数不接受 2 个参数”

c语言中的strcpy啥意思,简单点解释

strcpy函数

C语言中的复制函数(strcpy和memcpy)

strcpy和memcpy的区别