gpt4 book ai didi

C if (!(*dest++ = *src++)) return ret 是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:27 25 4
gpt4 key购买 nike

我正在尝试引导 strncat 函数。我理解其中的大部分内容,并且可以用不同的方式编写它,但我不知道如何编写更长版本的 while (!(*dest++ = *src++))

char *_strncat(char *dest, char *src, int n)
{
char *ret = dest;
while (*dest) /* same as: while (dest[0] !- '\0') */
{
dest++; /* w. each loop, array is shifted left until it's empty */
}
while (n != 0)
{
if (!(*dest++ = *src++)) /* <=========here */
return ret;
n--;
}
*dest = 0;
return (ret);
}

有人可以展示并解释如何扩展这条线,以便我可以指导它并了解它是如何工作的吗?谢谢!

最佳答案

行:

if (!(*dest++ = *src++))
return;

可以扩展为:

char temp1 = *src++; // copy from *src to temp1 and increment src
char temp2 = (*dest++ = temp1); // Copy temp1 to *dest, increment dest, and also copy value to temp2
if (!temp2) return ret; // return if the value that was copied is a null byte

后增量的使用在这里很重要。它确保我们在指针递增之前从 *src 复制到 *dest。所以要进一步扩展它,它将是:

char temp1 = *src;
src = src + 1;
char temp2 = (*dest = temp1);
dest = dest + 1;
if (!temp2)
return ret;

关于C if (!(*dest++ = *src++)) return ret 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427675/

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