Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317812
  • 博文数量: 50
  • 博客积分: 494
  • 博客等级: 下士
  • 技术积分: 1045
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-06 16:49
文章分类

全部博文(50)

文章存档

2016年(1)

2014年(4)

2013年(29)

2012年(16)

分类: C/C++

2012-11-09 11:31:14

strcpy
C语言标准库函数
原型声明:
extern char *strcpy(char *dest,const char *src);   
头文件:string.h  
功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间  
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。   
返回指向dest的指针。

项目工程中的一个用例:

点击(此处)折叠或打开

  1. memset(nGblInfo->sdns, 0, sizeof(nGblInfo->sdns));
  2.          strcpy(nGblInfo->dns,strtok(value,","));
  3.          strcpy(nGblInfo->sdns, strtok(NULL,",");
执行工程的时候发现,会出来segmentation fault
通过调试发现,改成如下这样ok了

点击(此处)折叠或打开

  1. memset(nGblInfo->sdns, 0, sizeof(nGblInfo->sdns));
  2.          strcpy(nGblInfo->dns,strtok(value,","));
  3.          if(strtok(NULL,",") != NULL)
  4.                     strcpy(nGblInfo->sdns, strtok(NULL,","));

以上得出结论是strcpy函数的scr参数不能为空,当然dest更不能为空,但是很好奇的是:
strcpy标准的库函数,应该对NULL作判断了吧,怎么会出现段错误,至少抛出异常啥的提示信息呀
阅读(2257) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~