题
这是我的问题:我有一个数组,其中包含的命令[1],随后通过几项命令args a[2]、[3],...
什么,我需要做的就是下面
- 创建一串,其中包括记录和结合args E.g.:
cmd arg1arg2arg3
- 执行该命令的字符串
这里是怎么找到这样做(伪码):
- 预先计算每arg并将其存储在一个阵列
- 得到一个组合(用GNU科学图书馆)
- 计算字节的大小需要来分配string(长cmd+1+ 搭arg1+1+argn-1+1)(+1一般的空白,并在 结束\0)
- 建立的串通过使用strcat
- 执行命令-串
嗯,它的工作原理,但我不知道,如果使用strcat故意实际上是有效的/正确的方式做到这一点。
任何建议?
解决方案
不,使用 strcat()
是不是有效的,因为它有步骤通过串找到结束你每次呼叫。
好多了,要么它的所有一次使用 snprintf()
如果你有(并且可以挤压你的论据有),或者它自己使用的直接指针的操纵。
当然,对于这个问题在实践中需要进行这种命令往往确实如此。
其他提示
如果你存储的长度各组串,你可以切换到使用 memcpy
有正确的指针移,而不是使用 strcat
这不会有找到结束串adn测试的每一个源char对 '\0'
, 但除此之外没有很多更多,你可以做,以使创建一个连接的速度显着提高。
strcat()
, 以及所有串操纵功能的标准图书馆,是效率低下。这是由于串的方式储存在C,即零终止,因而每一功能已经找到结束的串通过循环的每个字符。
无论如何,你做的早产的优化:多strcat()呼吁在这里将执行的真快相比,命令执行的,所以你不应该担心的效率的方式连接起来.
之前优化的一部分代码,你必须显示它是一个瓶颈,优化将真正提高执行时间。在大多数情况下,没有必要优化:这是根本不值得花费的时间。
我会做的 sprintf.
不隶属于 StackOverflow