本片博客简单写下关于strcpy()、strncpy()两函数的用法、区别及使用时需要注意的地方。

一、使用介绍

1、 strcpy()函数用法

char * strcpy ( char * destination, const char * source );

功能:将source源字符串拷贝到目标空间destination。

参考代码:

#include<stdio.h>int main()
{char str1[20] = "xxxxxxxxx"; char str2[] = "xxp"; strcpy(str1, str2);printf("%s\n", str1); // xxpreturn 0;
}

调试观察结果:

不难发现,strcpy函数是将source字符串的所有内容包括'\0'一同拷贝到目标空间当中。

 注意:

1)源字符串必须以 '\0' 结束。
        2)会将源字符串中的 '\0' 拷贝到目标空间。
        3)目标空间必须足够大,以确保能存放源字符串,否则会报错。
        4)目标空间必须可变,即不能被const修饰。

2、 strncpy()函数用法

char * strncpy ( char * destination, const char * source, size_t num )

功能:将source源字符串的num个字符拷贝到目标空间destination。

参考代码:

int main()
{char str1[20] = "xxxxxxxxxxxxxxx";char str2[] = "hello world";strncpy(str1, str2, 5);printf("%s\n", str1); // helloxxxxxxxxxxreturn 0;
}

观察调试结果:

拷贝结果分析:(源字符串str2,目标字符串str1)

1)如果str2小于num,那么将str2拷贝到str1后,在目标的后边追加0,直到num个。

2)如果str2大于num,则将对应数量的str2字符串拷贝到str1当中。

二、模拟实现

1、strcpy()模拟实现

参考代码:

void my_strcpy(char* str1, const char* str2)
{int ret1 = strlen(str2) + 1;int ret2 = strlen(str1) + 1;assert(ret1 <= ret2);for (int i = 0; i < ret1; i++){str1[i] = str2[i];}
}int main()
{char str1[10] = "xxxxxxxxx";char str2[] = "xxp";my_strcpy(str1, str2);printf("%s\n", str1);return 0;
}

2、strncpy()模拟实现

void my_strncpy(char* str1, const char* str2, size_t num)
{assert(str1 && str2);size_t ret = strlen(str2) + 1;if (num > ret){for (size_t i = 0; i < ret; i++){str1[i] = str2[i];}for (size_t j = ret; j < num; j++){str1[j] = '\0';}}else{for (size_t i = 0; i < ret; i++){str1[i] = str2[i];}}
}int main()
{char str1[10] = "xxxxxxxxx";char str2[] = "xiaxp";my_strncpy(str1, str2, 8);printf("%s\n", str1);return 0;
}

贴张调试图,便于理解。

★★★★★ 感谢阅读!!!

strcpy()、strncpy()函数相关推荐

  1. 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多

    strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把 ...

  2. strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

    strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...

  3. java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用

    C语言strcpy()函数:复制字符串 头文件:#include 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数s ...

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

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

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

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

  6. 用C语言实现strcpy函数和strncpy函数

    内容会持续更新,有错误的地方欢迎指正,谢谢! strcpy函数 strcpy是C语言中的一个复制字符串的库函数,手动实现如下: char* strcpy(char* des,const char* s ...

  7. C语言strcpy、strncpy函数是否会复制‘\0‘结束符

    1.首先看看strcpy函数的原型 /* strcpy函数原型*/ char *strcpy(char *est,const char *src) {assert((dest!=NULL)&& ...

  8. 深析strcpy与strncpy函数的功能及缺陷

    首先,两者都是字符串拷贝函数,不同的是两个的参数个数不一样. char *strcpy(char *dest,const char *src) char *strncpy(char *dest,con ...

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

最新文章

  1. 使用TensorFlow跟踪千年猎鹰
  2. 分享几段祖传的 Python 代码,拿来直接使用!
  3. 在windows上编译apr等相关动态库
  4. 三星有网络显示无网络连接到服务器,三星s5296连接了网络为什么不能用 看完这些原因就知道了...
  5. java == hashcode,java中==和equals和hashCode的区别
  6. linux常用调试,linux下gdb常用的调试命令
  7. Java 设计模式之Bridge桥接模式
  8. C 标准库 limits.h
  9. 关于CCSpriteSheet报错问题
  10. pyecharts实现多节点、长路径的sankey桑基图
  11. 微软新一代企业应用平台 促进动态IT发展
  12. 一个小型的中文文本分类系统(项目链接文末)——《ML算法原理和实践》学习笔记
  13. bios更新工具_5分钟教会您升级bios主板,华硕主板BIOS教程
  14. tracepro杂散光分析例子_cSensor E2000系列气体光谱分析仪
  15. 百度知道1000指数的关键词留链接排名到第一的实战案例
  16. 【C】 typedef struct LNode * list
  17. 技术团队人效计算公式
  18. 踩坑记---Win10安装anaconda及tensorflow-cpu版
  19. CPT,CPM,CPS
  20. Java之父——詹姆斯·高斯林

热门文章

  1. 学网络安全需要什么基础?
  2. 由于找不到vcruntime140_1.dll无法继续执行代码,vcruntime140_1.dll丢失如何修复
  3. 【OBS-STUDIO】OBSApp: OBS入口类
  4. Idea2023安装教程
  5. 不朽凡人 第五百二十章 有脾气冲我来
  6. jquery 表格分页等操作实现代码(pagedown,pageup)
  7. Pose for Everything: Towards Category-Agnostic Pose Estimation 阅读笔记
  8. python网球比赛模拟主持稿_模拟课堂比赛主持人稿
  9. 6步安全解决WinRAR弹出广告,新版通用保姆级教程,收藏备忘无忧
  10. ROS IDE - RoboWare Studio 安装与使用教程