Strcpy / Strncpy的工作方式
来源:互联网 发布:社交网络百度网盘 编辑:程序博客网 时间:2024/05/18 02:09
Strcpy的函数原型: char *strcpy(char *dst, const char *src)函数功能: 将字符串src拷贝到字符串dst中去。用法解析: 在执行字符串拷贝之前,“用户需要保证”dst指向的空间足够大。否则的话,可能会产生意想不到的后果。 如果dst所指向的空间不足以存储src中的字符串的话,不要以为只是遗失了src中存储不下的字符串这么简单。 在VC的库函数中,strcpy()的定义如下: char * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ /*注意这行有个分号*/ return( dst );} 需要留意的是,这个函数定义中的循环语句:while( *cp++ = *src++ );这个循环会一直执行,直到循环条件为0。注意这里的0不是数字里的零,而是ASCII码中的0。也就是’/0’。也就是说,如果dst所指向的存储空间不够大的话,这个函数会将src中的部分内容拷贝到dst所指内存空间后面的内存中。而dst所指空间后面的内存却是不可知的,有可能已经被其它资源占用了,这样就会破坏掉原先存储的内容,导致系统崩溃。 因为strcpy在执行字符串拷贝的时候,会从src所指位置开始,检测当前内存单元中存储的数据是否为‘/0’。如果不为‘/0’,则将这个内存单元中的数据拷贝到dst所指向的内存中。如果src中存储的字符串长度大于dst所申请的内存空间的话,就会产生越界,造成不可预知的后果。 Strncpy的函数原型: char *strncpy(char *dest, const char *src,int count)函数功能: 将字符串src中的count个字符拷贝到字符串dest中去。 用法解析: 这个函数和strcpy类似,当src的长度大于dst申请的空间的时候,情况和strcpy一样;如果第3个参数count的值大于src中字符串的长度的话,就会将字符串src拷贝到dst中,返回函数。 示例程序: #include // #include // for getch() #include // for stycpy() using namespace std; int main(){ int i = 0; char dst[11] = "1234567890"; char src[15] = {'1','2','3','4','5','/0','7','8','9','0','1','2','3','4'}; strcpy( dst, src ); cout<<"strcpy()"< 功能:由src所指内存区域复制count个字节到dest所指内存区域。 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。 举例: // memcpy.c #include #include main() { char *s="Golden Global View"; char d[20]; clrscr(); memcpy(d,s,strlen(s)); d[strlen(s)]=0; printf("%s",d); getchar(); return 0; } strcpy是拷贝字符串,以/0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止) strcpy的原型为 char *strcpy(char *dest, const char *src) 而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符) memcpy的原型为 void *memcpy(void *dest, const void *src, size_t n);
- Strcpy / Strncpy的工作方式
- Strcpy / Strncpy的工作方式
- Strcpy / Strncpy的工作方式
- strcpy与strncpy工作方式及其区别
- strcpy与strncpy工作方式及其区别
- strcpy,strncpy的区别
- 库函数strcpy的工作方式
- 库函数strcpy的工作方式
- Strcpy和Strncpy的区别
- Strcpy和Strncpy的区别-
- Strcpy和Strncpy的区别
- Strcpy和Strncpy的区别
- strcpy, strncpy, strlcpy的区别
- strcpy与strncpy的区别
- strcpy 和 strncpy的区别
- strcpy和strncpy的区别
- strcpy ,strncpy ,strlcpy的用法
- strcpy()和strncpy()的区别
- 解决powerdesigner生成Oracle数据库脚本时,表名和字段带有“”双引号的方法
- 微软,Google面试题 (4) —— 在二叉树中找出和为某一值的所有路径
- 建网站的那些事(6)--- 域名注册
- C++程序调用已编译的C程序【整理】
- sprintf函数使用详解【整理】
- Strcpy / Strncpy的工作方式
- 虎年行大运,手机失而复得!
- 在寒假的学习总结和一些个人建议
- C语言数据类型大小和结构体中变量的地址分配方法【整理】
- windows安全
- Timer和TimerTask详解
- wait()和sleep()的区别
- 网站设计大访问量应用的解决方案
- 什么是ORM为什么要使用ORM?