编写my_strcpy函数,但不会溢出目标数组,复制的结果必须是一个真正的字符串

zhongyuanceshi 2009-02-05 03:31:33
如题,编写一函数。不知道这意思是不是就是strncpy函数呢?
...全文
236 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2009-02-27
  • 打赏
  • 举报
回复
必须考虑dest与src的逻辑关系,不能被冲掉了。
vip__888 2009-02-27
  • 打赏
  • 举报
回复
用个for 语句 不是很难
zhongyuanceshi 2009-02-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 piginthetree 的回复:]
把目标数组的大小作为参数传进去,限制复制的大小小于目标数组的大小。
[/Quote]
应该是将目标数组大小定义成宏,加一个临时长度变量len,每复制一个到目标数组,len就++,保证len<目标数组大小就复制字符,不知道是不是这样理解?

#include "stdafx.h"
#include "string.h"
#include "stdio.h"

#define SIZE 5

char *my_strcpy(char *dst,const char *src)
{
char *cp=dst;
int len=0;

while((*src!='\0')&&len<SIZE)
{
*dst=*src;
src++;
dst++;
len++;
}
*dst='\0';

return cp;
}
int main(int argc, char* argv[])
{
char dest[SIZE];

printf("%s\n",my_strcpy(dest,"fyafykafafy"));

return 0;
}
piginthetree 2009-02-05
  • 打赏
  • 举报
回复
把目标数组的大小作为参数传进去,限制复制的大小小于目标数组的大小。
jackzhhuang 2009-02-05
  • 打赏
  • 举报
回复
就算string也会有溢出,我们不能总是想依赖灵丹妙药,编程的时候首先要想的就是处理错误情况。
hai040 2009-02-05
  • 打赏
  • 举报
回复
应该不可能保证目标不溢出
strncpy n传错了一样溢出
chenyingshu 2009-02-05
  • 打赏
  • 举报
回复
帮顶
zhongyuanceshi 2009-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 waizqfor 的回复:]
应该就是不借助函数 自己编写一个strcpy函数
给你个规范写法

C/C++ code
 char * strcpy( char *strDest, const char *strSrc )
  {
  assert( (strDest != NULL) &&(strSrc != NULL) );
  char *address = strDest;
  while( (*strDest++ = * strSrc++) != ‘\0’ );
  return address;
  }
[/Quote]

这个就是strcpy的,我要求的不会溢出目标数组,我想可能是strncpy函数需要传一个要复制的个数n
nk_ysg 2009-02-05
  • 打赏
  • 举报
回复
顶ls
waizqfor 2009-02-05
  • 打赏
  • 举报
回复
应该就是不借助函数 自己编写一个strcpy函数
给你个规范写法

 char * strcpy( char *strDest, const char *strSrc )
  {
  assert( (strDest != NULL) &&(strSrc != NULL) );
  char *address = strDest;
  while( (*strDest++ = * strSrc++) != ‘\0’ );
  return address;
  }

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧