一.char *strcpy(char *dest, const char *src)

参数

  • dest -- 指向用于存储复制内容的目标数组。
  • src -- 要复制的字符串。

注意:

1.dest需要分配内存,比如用数组的形式 或者 指针进行new操作.

2.src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。比如dest = new char[strlen(src)+1].

举例:

char array[6];
strcpy(array, “hello”);//正确,数组array定义后就被分配了内存。char *p = malloc(6);  //正确,指针p指向了确定大小的内存。
strcpy(p, "hello");char *p;         //错误,指针p没有初始化,无法对p进行复制操作。
strcpy(p, "hello");
char *p = NULL;     //错误,指针赋为NULL,表示不指向任何地方。(delete某个指针后,把它赋为0,表明它不再指向任何对象)
strcpy(p, "hello");
char ch[6] = "hello";
char *p = ch;       //正确,指针p指向ch的首地址。
strcpy(p, "hello");

二. char *strncpy(char *dest, const char *src, size_t n)

把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。

1)source串长度<=destin串长度,(这里的串长度包含串尾NULL字符)
如果n>source由于长度达到source NULL,正常复制,特别注意,如果source中有NULL,strncpy复制到NULL即使没到n也提前停止。如果n = source串长度,与strcpy一致。注意n的选择当n > destin串长度,destin栈空间溢出产生崩溃异常。
2)source串长度>destin串长度
如果n =destin串长度,则destin串没有NULL字符,会导致输出会有乱码。如果不考虑source串复制完整性,可以将destin 最后一字符置为'\0'。
综上,一般情况下,使用strncpy时,建议将n置为destin串长度(除非你将多个source串都复制到destin数组,并且从destin尾部反向操作),复制完毕后,为保险起见,将destin串最后一字符置NULL,避免发生在第2)种情况下的输出乱码问题。当然喽,无论是strcpy还是strncpy,保证destin串容量(能容纳下source串)才是最重要的。

strcpy,strncpy的使用注意相关推荐

  1. strcpy和strncpy区别 memcpy strcpy strncpy lstrcpy lstrncpy wstrcpy, memmove

    strcpy和strncpy区别(2009-04-27 15:48:52) 转载标签:杂谈 分类:C++/C 第一种情况: char* p="how are you ?"; cha ...

  2. strcpy ,strncpy ,strlcpy地用法

    strcpy ,strncpy ,strlcpy地用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...

  3. (C语言)常用的字符串函数介绍(strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen)非常详细

    理解 strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen这些函数,可以帮助我们更好的对字符串进行操作,做到玩转字符串. 目录 1.s ...

  4. C语言中函数strcpy ,strncpy ,strlcpy的用法

    C语言中函数strcpy ,strncpy ,strlcpy的用法 http://hi.baidu.com/qi_hao/blog/item/043ef21c6e26c58286d6b678.html ...

  5. C语言strcpy,strncpy和strlcpy讲解

    前言 C风格的字符串处理函数有很多,如strcpy().strcat()等等. strcpy与strcat char* strcpy (char* dest, const char* src); ch ...

  6. memcpy, strcpy, strncpy的区别和用法

    注意事项 strcpy 是依据 "\0" 作为结束判断的,如果 s2 的空间不够,则会引起 buffer overflow. memcpy用来在内存中复制数据,由于字符串是以&qu ...

  7. strcpy,strncpy,memcpy,memmove

    ❤️强烈推荐人工智能学习网站❤️ 这4个字符串处理函数是我们经常用到的,下面我们来了解释一下它们之间的区别. strcpy:只用于字符串的复制,以\0为结束符,且\0也一并拷贝过去.不需要在末尾加上\ ...

  8. memcpy,strcpy,strncpy

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  9. linux strcpy函数,C语言中函数strcpy ,strncpy ,strlcpy,strcpy_s的用法

    好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. strcpy 我们知道,strcpy 是依据 \0 作为结 ...

  10. C语言字符串库函数strcpy,strncpy,strcat,strncat,ctrcmp,strncmp的简介与实现

    目录 一.C语言部分字符串库函数的介绍 1.strcpy函数的介绍 2.strncpy函数的介绍 3.strcat函数的介绍 4.strncat函数的介绍 5.strcmp函数的介绍 6.strncm ...

最新文章

  1. 潘在亮:给业务开发提供黑科技装备的“测试Q博士”(图灵访谈)
  2. 网口相机设置自动复位时间(心跳时间)
  3. C++ Const指针学习
  4. Linux磁盘分区及文件系统管理之基础概念
  5. qt linux 聊天室,Qt网络聊天室客户端
  6. 利用windows 2003实现服务器群集的搭建与架设(二)
  7. vector常用操作
  8. 安装GitHub安装步骤
  9. php同步登录,UCenter单点登录/同步登录/同步登出实例_PHP教程
  10. 3dmax 2014加载panda3d插件失败
  11. html省市插件,省市区三级联动:非常好用的纯js插件
  12. css绘制一个Pinia小菠萝
  13. 高可用性和高可靠性的规划与设计
  14. 网易我的世界下的服务器目录在哪个文件夹,网易我的世界手机版存档导出在哪个文件夹 | 手游网游页游攻略大全...
  15. TOPCON/拓普康 SR-3AR分光辐射计
  16. 20162316刘诚昊 第五周学习总结
  17. 新农慕课python项目答案_2020中国大学MOOC(慕课)Python编程基础题目及答案
  18. 大型门户网站(响应式)
  19. Matlab:拉盖尔-高斯光束光阑衍射
  20. linux服务端查看firebox版本,[图]Linux端Firefox 84将默认启用WebRender

热门文章

  1. 别人的 阿里校招 面试总结
  2. 单片机串口时序与TTL电平
  3. 动量反转模型 Matlab code,量化选股策略——动量翻转模型
  4. python手势识别控制幻灯片翻页系统_实战1.2-利用手势识别器,实现视图的手势控制...
  5. ping不通阿里云服务器的公网ip的解决
  6. Python 布尔值(Booleans)
  7. MySQL复制(一):异步复制(Asynchronous replication)
  8. Python 保留有效数字 (significant digits)
  9. 在IE浏览器中启用Java Applet扩展
  10. 搜狐视频P2P技术揭秘 - 业务篇