gpt4 book ai didi

c - C中的Strcpy实现

转载 作者:太空狗 更新时间:2023-10-29 15:18:03 26 4
gpt4 key购买 nike

所以,我在 C 中看到了这个 strcpy 实现:

void strcpy1(char dest[], const char source[])
{
int i = 0;
while (1)
{
dest[i] = source[i];

if (dest[i] == '\0')
{
break;
}

i++;
}
}

对我来说,它甚至将 \0 从源复制到目标。

而且我也看到了这个版本:

// Move the assignment into the test
void strcpy2(char dest[], const char source[])
{
int i = 0;
while ((dest[i] = source[i]) != '\0')
{
i++;
}
}

对我来说,当尝试将 \0source 分配给 dest 时,它会中断。

什么是正确的选项,是否复制 \0

最佳答案

代码应该如下所示:

char * strcpy(char *strDest, const char *strSrc)
{
assert(strDest!=NULL && strSrc!=NULL);
char *temp = strDest;
while(*strDest++ = *strSrc++); // or while((*strDest++=*strSrc++) != '\0');
return temp;
}

可以NOT删除第二行char *temp = strDest;,直接返回strDest。这将导致返回的内容出错。例如,它不会返回正确的值(应该是 22)将检查返回的 char * 的长度。

char src_str[] = "C programming language";
char dst_str[100];
printf("dst_str: %d\n", strlen(strcpy(dst_str, src_str)));

关于c - C中的Strcpy实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14476627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com