重现 strcpy 的行为

Reproduce the behaviour of strcpy

我试图在 c 中重现 strcpy 的行为,我的问题是该函数有效但它在末尾附加了额外的东西。

char    *ft_strcpy(char * dst, const char * src)
{
int i;
i = 0;
while (src[i] != '[=10=]') {
    dst[i] = src[i];
    i++;
}
return dst;
}

当我 运行 它时,我得到以下信息。

int main()
{
char p[] = {};
char z[] = "Hello World";
ft_strcpy(p,z);
printf("%s\n", p);
return 0;
}

function results

您没有复制 nul 终止符,因此 printf 不知道要停止。

在循环后面加上dst[i] = 0;就可以了。

此外,您还没有为 p 分配任何 space,因此您将获得未定义的行为。对于第一个测试,只需执行类似 char p[100]; 的操作,并确保 z 的长度永远不会超过 99 个字符。最终你需要一个更好的修复,但这会让你开始。

天天,

循环结束后设置dest[i]为'\0'。这是代码:

int main()
    {
    char src[100], dest[100], i;
    printf("Enter string Src: ");
    scanf("%s",src);
    for(i=0; src[i]!='[=10=]'; ++i)
        {
        dest[i]=src[i];
        }
    dest[i]='[=10=]';
    printf("String Dest: %s",dest);
    return 0;
    }