zoukankan      html  css  js  c++  java
  • 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时(第二个参数,为字符串dst的长度),类似于赋值,直接把目的字符串的换成了源字符串,目的字符串后面的字符无法再通过数组下标获取到,这点很奇怪,不知道是哪里出了问题?

  • 相关阅读:
    羊年春节微信数据大解析
    微信公众号推荐(自己关注的微信公众平台导航)
    微信要革"传统电视"的命吗?
    微信是在学苹果模式吗?
    发微信红包啦!借花献佛
    有原创保护能力的公众帐号可申请页面模版功能和图文消息正文插入历史群发链接
    编程能力与编程年龄
    代码执行的效率
    对九个超级程序员的采访
    编程真难啊
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9993867.html
Copyright © 2011-2022 走看看