1. strcpy函数:顾名思义字符串复制函数
原型:extern char *strcpy(char *dest,char *src);
功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest(地址中存储的为复制后的新值)。
要求:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
实例:

#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
#include <stdio.h>int main(void)
{const char str[] = "How many characters does this string contain?";printf("without null character: %zu\n", strlen(str));printf("with null character:    %zu\n", sizeof str);#ifdef __STDC_LIB_EXT1__printf("without null character: %zu\n", strnlen_s(str, sizeof str));
#endif
}

该函数的参数是字符指针,也就是可以是字符串变量和字符数组,因为它们的变量名代表首字符地址。字符串默认有一个null结束符,字符数组没有。所以此处需要注意:因为src要求有null结束符,所以字符数组的长度必须大于等于src包含null结束符的总长度。例如*,char* src=“abcd”; char dest[5]; 这里dest的长度就至少为5。
2. strncpy函数:多个n代表可以指定字符个数进行赋值。
原型:char * strncpy(char *dest, char *src, size_tn);
功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。
要求:如果n > dest串长度,dest栈空间溢出产生崩溃异常。
该函数注意的地方和strcpy类似,但是n值需特别注意:
  **1)*src长度<=dest长度,(这里的长度包含串尾NULL字符)
  如果n=(0, src串长度),src的前n个字符复制到dest中。但是由于没有NULL字符,所以直接访问dest串会发生栈溢出的异常情况。这时,一般建议采取memset将dest的全部元素用null填充,
  如:memset(dest,0,7)(7为从dest起始地址开始前7个位置填充null,dest可以为字符指针和数组名)。
  注意:char
pc=“abc”; char chs[5]; sizeof(pc)为4(包含null)(有些编译器不行),sizeof(chs)为5。
  如果n = src串长度,与strcpy一致。
  如果n = dest串长度,[0,src串长度]处存放于desk字串,(src串长度, dest串长度]处存放NULL。
  **2)**src串长度>dest串长度 (需要自己加’\0’)
  如果n =dest串长度,则dest串没有NULL字符,会导致输出会有乱码。如果不考虑src串复制完整性,可以将dest最后一字符置为NULL。
  所以,一般把n设为dest(含null)的长度(除非将多个src复制到dest中)。当2)中n=dest串长度时,定义dest为字符数组,因为这时没有null字符拷贝。

strcpy和strncpy的区别相关推荐

  1. strcpy和memcpy的区别 | strcpy和strncpy的区别

    strcpy和memcpy都是标准C库函数,它们有下面的特点. strcpy提供了字符串的复制.即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符. 已知strcpy ...

  2. snprintf和strcpy和strncpy的区别

    概述 snprintf,strcpy,strncpy这几个函数的功能都是将原字符串拷贝到目的字符串中.但是在细节部分还是存在着一些细微的差别.主要参考man说明. snprintf 格式 int sn ...

  3. strcpy()与strncpy()的区别

    头文件:#include <string.h> strcpy() 函数用来复制字符串,其原型为: char *strcpy(char *dest, const char *src); [参 ...

  4. strcpy与strncpy的区别

    2019独角兽企业重金招聘Python工程师标准>>> 我们先来看看strcpy, 下面的程序没有问题: #include <iostream> using namesp ...

  5. c语言strcpy与strncpy区别,strcpy与strncpy的区别

    我们先来看看strcpy, 下面的程序没有问题: #include using namespace std; int main() { char str[4] = {0}; char *p = &qu ...

  6. 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 ...

  7. strcpy和strncpy用法和区别

    1. strcpy函数: 顾名思义字符串复制函数:原型:extern char *strcpy(char *dest,char *src); 功能:把从src地址开始且含有NULL结束符的字符串赋值到 ...

  8. strcpy()、strncpy()函数

    本片博客简单写下关于strcpy().strncpy()两函数的用法.区别及使用时需要注意的地方. 一.使用介绍 1. strcpy()函数用法 char * strcpy ( char * dest ...

  9. stpcpy和stpncpy用法 strcpy和strncpy用法

    文章目录 strncpy, strncpy_s参考文档用法 strcpy, strncpy实例 strcpy, strncpy用法举例 运行结果 stpcpy()和stpncpy()用法上的区别(C语 ...

最新文章

  1. vijos 1030 重叠的方框
  2. 从 Windows 切换到 Mac,不能错过这9条Tips
  3. haproxy对mysql集群进行负载均衡
  4. 武汉大学2010年数学分析试题解答
  5. 实验四 查找和排序算法实现
  6. Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件
  7. C++开发WPF,开发环境配置
  8. css 中多种边框的实现小窍门
  9. 手机号归属地区编码_关于手机号码的详细解析~
  10. python中的def是什么意思啊_等号上面有个def是什么意思?
  11. macOS 10.14配置APUE环境
  12. Result window is too large, from + size must be less than or equal to: [10000]
  13. 恶意代码分析平台Truman相关资料
  14. 神奇的「种子法则」:意念具有不可思议的超能量
  15. matlab仿真限幅发散,simulink仿真收敛,但用m文件实现却是发散的,是怎么回事?...
  16. 7个程序员常用的接单平台推荐
  17. python中的怎么打出来_如何在Python中打印上标?
  18. 老式录像带VHS信号故障毛刺干扰特效AE/PR插件 Signal v1.2.3
  19. 用openpyxl读取文件夹中excel到数据库
  20. [WARNING] No archetype found in remote catalog. Defaulting to internal catalog(已解决)

热门文章

  1. 在python中遍历字典元素
  2. 10月18---10月20号第一周总结
  3. html预览pdf上的电子印章,移动端在线预览pdf显示签名签章pdf显示多页
  4. TCP与UDP的区别:
  5. sr锁存器 数电_数字电路
  6. android之微信开放平台修改签名
  7. java中hashmap遍历的几种方法
  8. 《计算机网络(谢希仁6版)》学习笔记(word导入)[待补全]
  9. 常见测试场景用例设计(1):登录页面测试用例
  10. android中bitmap压缩的几种方法详解