我目前使用string.h
库中的strcat()
函数连接c中的字符串。C:连接字符串的最佳和最快方式是什么
我想到了这一点,我得出了一个结论,即它应该是非常昂贵的函数,因为在开始连接之前,它必须遍历char数组,直到找到char '\0'
。
例如,如果我将字符串使用strcat()
"horses"
1000次,我得付 (1 + 2 + 3 + ... + 1000) * strlen("horses") = (1000*1001)/2 * 6 = 3003000
我想到了非标准的方式,保持与字符串长度的整数,然后指针发送给strcat()
到字符串的结尾:
strcat(dest + dest_len, "string");
在这种情况下,我只付1000 * strlen("horses") = 1000 * 6 = 6000
。
6000
远低于3003000
,所以如果您进行大量这样的连接,它对性能可能非常关键。
有没有更多的标准方式来做到这一点,看起来比我的解决方案更好?
如果你有太多的字符串连接,你可以使用'snprintf(buf,len,“%s%s%s” ,str1,str2,str3)' –
这听起来像是我过早的优化。你知道迭代字符串中的字符有多快吗? –
如果你正在保持字符串的长度,那么你也在做同样的事情......不同之处在于你在你的代码中执行它,而不是'strcat()'为你做! – Nullpointer