注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

创思通信官网:www.csgsm.com

创思通信-引领物联网新时代 520ic.taobao.com

 
 
 

日志

 
 
 
 

strdup和strcpy  

2010-04-09 20:07:24|  分类: c&c++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

strdupstrcpy具体的区别,以及在不同操作系统下的使用。

strdup

原型:

extern char *strdup(char *s);

用法:#include <string.h>

功能:复制字符串s

说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。

举例: // strdup.c

#include <string.h>

#include <stdio.h>

int main(void) {

char *from = "Golden Global View";

char *to = strdup(from);

printf("%s",to);

free(to);

return 0;

}

strcpy

原型:

extern char *strcpy(char *dest,char *src);

用法:#include <string.h>

功能:把src所指由NULL结束的字符串复制到dest所指的数组中

说明:srcdest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。

举例: // strcpy.c

#include <string.h>

#include <stdio.h>

int main(void) {

char *from="Golden Global View";

char to[20];

strcpy(to,from);

printf("%s",from);

return 0;

}

strdup不是标准的C函数,strdup可以直接把要复制的内容复制给没有初始化的指针(注意用完要free,否则出现内存泄露)因为它会自动在堆上分配空间给目的指针;strcpy的目的指针一定是已经分配内存的指针。

strdup实现如下:

char *strdup(const char *s) {

char *t = NULL;

if(s && (t = (char*)malloc((strlen(s)+1)))

strcpy(t, s);

return t;

}
  评论这张
 
阅读(1456)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018