这是我的问题:我有一个数组,其中包含命令a [1],后跟几个命令args a [2],a [3],...
我需要做的是以下
cmd arg1 arg2 arg3
这是我如何做到的(伪代码):
嗯,它有效,但我想知道是否故意使用strcat实际上是有效的/正确的方法。
有什么建议吗?
答案 0 :(得分:5)
不,使用strcat()
效率不高,因为每次调用它时都必须单步执行字符串以查找结尾。
使用snprintf()
如果你拥有它(并且可以在那里挤压你的参数),或者使用直接指针操作自己做的话,可以更好地做到这一切。
当然,为了实现这一点,你需要经常运行这个命令。
答案 1 :(得分:2)
如果你已经存储了每个组件字符串的长度,你可以使用memcpy
使用正确的指针偏移来切换到,而不是使用strcat
而不必找到字符串的那一端测试每个源char对'\0'
的测试,但除此之外,你可以做的更多,以便更快地创建连接。
答案 2 :(得分:1)
strcat()
以及标准库中的所有字符串操作函数都是低效的。这是因为字符串存储在C中,即零终止,因此每个函数必须通过迭代每个字符来找到字符串的结尾。
无论如何,你正在进行一个过早的优化:与命令执行相比,这里的多个strcat()调用执行速度非常快,所以你不必担心连接方式的效率。
在优化部分代码之前,您必须证明它是一个瓶颈,并且优化将真正改善执行时间。在大多数情况下,没有必要进行优化:根本不值得花时间。
答案 3 :(得分:0)
我会用sprintf来完成。