gpt4 book ai didi

在线性时间内用 crt 连接 C 字符串

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

假设我们想在 C 中将 const char *s[0], s[1], ... s[n-1] 连接成一个 long char out[]。

正式地(忽略缓冲区溢出,为简单起见):

void concatManyStrings(char out[], const char *s[], size_t n);

当然,这是一项微不足道的任务:从指向 out 的指针开始,并为每个字符推进它,
在循环输入字符串时。

另一种方法(仍然是线性时间)是将指针指向末尾,
每个 s[i] 做:

{ strcpy(endp, s[i]); endp += strlen(s[i]); }

但是,如果有一个知道如何 strcpy() 的标准 CRT 函数,代码会更清晰,
并返回复制的字符数(或等效地,指向复制后的下一个字符的指针)。

我能想到的唯一一个 CRT 函数是 sprintf(),但它显然不近
与返回计数的简单 strcpy() 一样高效。

有没有我缺少的功能?

最佳答案

不幸的是,

strlcpy()strlcat() 是非标准的,但是如果您碰巧拥有它们,您可以将它们用于此目的。它们都返回让您确定复制字符串的 end 的结果,这与 strcpy()strcat() 不同(有点无用)返回指向目的地起点的指针。

关于在线性时间内用 crt 连接 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196178/

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