我的 strcpy 实现无法正常工作

My implementation of strcpy not working properly

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

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

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

在这个例子中:

 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) != '[=12=]')
   {
        *(dest + i) = *(src + i);
        i++;
   }
   *(dest + i) = '[=12=]';
   return (dest);
}

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

喜欢

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