我的strcpy实现不能正常工作

时间:2016-09-05 14:19:54

标签: c string strcpy

我刚刚编写了strcpy函数,但它无法正常工作。在x个字符数量之后我有一个无限循环或者它会复制我的字符串但是给我一个错误......

char    *ft_strcpy(char *dest, char *src)
{
       int i;

       i = 0;
       while (*(src + i) != '\0')
       {
            *(dest + i) = *(src + i);
            i++;
       }
       *(dest + i) = NULL;
       return (dest);
}

2 个答案:

答案 0 :(得分:3)

在这个例子中:

 char a[] = "abc";
 char b[] = "xyzsadasdasdadsi";

您试图将17个字符放入字符串char *a,该字符串应该只存储其中的4个。

你不能这样做。您必须使用新的字符串,在该字符串中使用strlen()分配了足够的内存来存储所需的字符,例如:

char *new = malloc(sizeof(char) * (strlen(src) + 1));

另外,你还应该纠正你的功能:

char    *ft_strcpy(char *dest, char *src)
{
   int i;

   i = 0;
   while (*(src + i) != '\0')
   {
        *(dest + i) = *(src + i);
        i++;
   }
   *(dest + i) = '\0';
   return (dest);
}

答案 1 :(得分:0)

也许您应该使用malloc手动分配内存并使用' \ 0'来终止字符串。 (不是NULL,这是不同的。)

dest = (char *)malloc(sizeof(char) * strlen(src) + 1));
dest[strlen(src)] = '\0';