【发布时间】:2020-06-01 10:44:28
【问题描述】:
我最近试图找到输入 C 字符串缓冲区的大小,以便在 memcpy 中使用它来将输入缓冲区的内容复制到输出缓冲区而不重叠。
下面是代码sn-p。
char * func(char *buff1, char *buff2, char *outbuff)
{
int size = 0;
while(*buff1 != '\0')
{
size++;
buff1++;
}
memcpy(outbuff, buff1, sizeof(char)*size);
memcpy(outbuff + size, buff2, sizeof(char)*size);
return outbuff;
}
但是,我发现这是一种非常低效的查找大小的方法。如果你们知道任何其他替代方案,那将对我非常有帮助。
编辑:我不允许将它们的大小作为单独的参数传递。
【问题讨论】:
-
可能最有效的方法是在填充输入缓冲区时记住大小,并将其作为附加参数传递给
func。 -
我无法将它们的大小作为单独的参数传递。 — 为什么不呢?
-
@DanielLangr 这是给我的要求。我们可以在不使用 while 循环的情况下以更有效的方式做到这一点吗?
-
@user207421 在不使用任何循环的意义上是高效的,更像是一种矢量化方式。
-
@SauravRai 首先,我们需要了解您的任务和解决方案的要求。另外,请创建一个我们可以运行的最小可重现示例。顺便说一句,您认为
buff1在while循环之后指向什么?