编写一个名叫my_strcpy的函数,它类似于strcpy函数,但它不会溢出目标数组。复制的结果必须是一个真正的字符串。

liulushi_1988 2012-05-22 03:17:10
编写一个名叫my_strcpy的函数,它类似于strcpy函数,但它不会溢出目标数组。复制的结果必须是一个真正的字符串。
(1) 要求编写函数和一个测试该函数的main函数。
(2) 给出适当的注释和提示信息。
劳烦高手指导一下!!!谢谢!!
...全文
475 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WYJXHL97 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
在参数里,输入字符串数组的长度
char *my_strcpy(char *dest, int dest_len, const char *src, int src_len);
[/Quote]采用ls的函数定义,莫怪。。。
#include<stdio.h>   
#include<string.h>

char *my_strcpy(char *dest, int dest_len, const char *src, int src_len)
{
int i;
int len;

if((dest==NULL)||(src == NULL))
return NULL;

len = (dest_len - 1)>src_len?src_len:(dest_len - 1);

for (i = 0; i < len;i++)
{
dest[i] = src[i];
}
dest[i] = '\0';

return dest;
}

void main()
{
char dest[10];
char src[] = "1234567890qw";

my_strcpy(dest,10,src,strlen(src));
printf("%s",dest);
}

内容比较简单,lz可以自己加注释。。
leo000111 2012-05-22
  • 打赏
  • 举报
回复
下面是linux内核lib库中的实现

char *strncpy(char *dest, const char *src, size_t count)
{
char *tmp = dest;

while(count)
{
if ((*tmp = *src) != '/0')
src++;
tmp++;
count--;
}
return dest;
}

要想做到不溢出,得提供目标数组的大小
prohibit 2012-05-22
  • 打赏
  • 举报
回复
直接看strncpy函数的源码不就得了~~
#include <cruntime.h> 
#include <string.h>

/***
*char *strncpy(dest, source, count) - copy at most n characters
*
*Purpose:
* Copies count characters from the source string to the
* destination. If count is less than the length of source,
* NO NULL CHARACTER is put onto the end of the copied string.
* If count is greater than the length of sources, dest is padded
* with null characters to length count.
*
*
*Entry:
* char *dest - pointer to destination
* char *source - source string for copy
* unsigned count - max number of characters to copy
*


char * __cdecl strncpy(char * dest, const char * source, size_t count)
{
char *start = dest;

while (count && (*dest++ = *source++)) /* copy string */
count--;

if (count) /* pad out with zeroes */
while (--count)
*dest++ = '\0';

return(start);
}
ouyh12345 2012-05-22
  • 打赏
  • 举报
回复
在参数里,输入字符串数组的长度
char *my_strcpy(char *dest, int dest_len, const char *src, int src_len);

70,037

社区成员

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

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