strcpy()、strncpy()函数
本片博客简单写下关于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()函数相关推荐
- 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多
strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把 ...
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...
- java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用
C语言strcpy()函数:复制字符串 头文件:#include 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数s ...
- (C语言)常用的字符串函数介绍(strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen)非常详细
理解 strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchar,strlen这些函数,可以帮助我们更好的对字符串进行操作,做到玩转字符串. 目录 1.s ...
- C语言中函数strcpy ,strncpy ,strlcpy的用法
C语言中函数strcpy ,strncpy ,strlcpy的用法 http://hi.baidu.com/qi_hao/blog/item/043ef21c6e26c58286d6b678.html ...
- 用C语言实现strcpy函数和strncpy函数
内容会持续更新,有错误的地方欢迎指正,谢谢! strcpy函数 strcpy是C语言中的一个复制字符串的库函数,手动实现如下: char* strcpy(char* des,const char* s ...
- C语言strcpy、strncpy函数是否会复制‘\0‘结束符
1.首先看看strcpy函数的原型 /* strcpy函数原型*/ char *strcpy(char *est,const char *src) {assert((dest!=NULL)&& ...
- 深析strcpy与strncpy函数的功能及缺陷
首先,两者都是字符串拷贝函数,不同的是两个的参数个数不一样. char *strcpy(char *dest,const char *src) char *strncpy(char *dest,con ...
- 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 ...
最新文章
- 使用TensorFlow跟踪千年猎鹰
- 分享几段祖传的 Python 代码,拿来直接使用!
- 在windows上编译apr等相关动态库
- 三星有网络显示无网络连接到服务器,三星s5296连接了网络为什么不能用 看完这些原因就知道了...
- java == hashcode,java中==和equals和hashCode的区别
- linux常用调试,linux下gdb常用的调试命令
- Java 设计模式之Bridge桥接模式
- C 标准库 limits.h
- 关于CCSpriteSheet报错问题
- pyecharts实现多节点、长路径的sankey桑基图
- 微软新一代企业应用平台 促进动态IT发展
- 一个小型的中文文本分类系统(项目链接文末)——《ML算法原理和实践》学习笔记
- bios更新工具_5分钟教会您升级bios主板,华硕主板BIOS教程
- tracepro杂散光分析例子_cSensor E2000系列气体光谱分析仪
- 百度知道1000指数的关键词留链接排名到第一的实战案例
- 【C】 typedef struct LNode * list
- 技术团队人效计算公式
- 踩坑记---Win10安装anaconda及tensorflow-cpu版
- CPT,CPM,CPS
- Java之父——詹姆斯·高斯林
热门文章
- 学网络安全需要什么基础?
- 由于找不到vcruntime140_1.dll无法继续执行代码,vcruntime140_1.dll丢失如何修复
- 【OBS-STUDIO】OBSApp: OBS入口类
- Idea2023安装教程
- 不朽凡人 第五百二十章 有脾气冲我来
- jquery 表格分页等操作实现代码(pagedown,pageup)
- Pose for Everything: Towards Category-Agnostic Pose Estimation 阅读笔记
- python网球比赛模拟主持稿_模拟课堂比赛主持人稿
- 6步安全解决WinRAR弹出广告,新版通用保姆级教程,收藏备忘无忧
- ROS IDE - RoboWare Studio 安装与使用教程