这是我的问题:我有一个数组,其中包含的命令[1],随后通过几项命令args a[2]、[3],...

什么,我需要做的就是下面

  • 创建一串,其中包括记录和结合args E.g.:

cmd arg1arg2arg3

  • 执行该命令的字符串

这里是怎么找到这样做(伪码):

  1. 预先计算每arg并将其存储在一个阵列
  2. 得到一个组合(用GNU科学图书馆)
  3. 计算字节的大小需要来分配string(长cmd+1+ 搭arg1+1+argn-1+1)(+1一般的空白,并在 结束\0)
  4. 建立的串通过使用strcat
  5. 执行命令-串

嗯,它的工作原理,但我不知道,如果使用strcat故意实际上是有效的/正确的方式做到这一点。

任何建议?

有帮助吗?

解决方案

不,使用 strcat() 是不是有效的,因为它有步骤通过串找到结束你每次呼叫。

好多了,要么它的所有一次使用 snprintf() 如果你有(并且可以挤压你的论据有),或者它自己使用的直接指针的操纵。

当然,对于这个问题在实践中需要进行这种命令往往确实如此。

其他提示

如果你存储的长度各组串,你可以切换到使用 memcpy 有正确的指针移,而不是使用 strcat 这不会有找到结束串adn测试的每一个源char对 '\0', 但除此之外没有很多更多,你可以做,以使创建一个连接的速度显着提高。

strcat(), 以及所有串操纵功能的标准图书馆,是效率低下。这是由于串的方式储存在C,即零终止,因而每一功能已经找到结束的串通过循环的每个字符。

无论如何,你做的早产的优化:多strcat()呼吁在这里将执行的真快相比,命令执行的,所以你不应该担心的效率的方式连接起来.

之前优化的一部分代码,你必须显示它是一个瓶颈,优化将真正提高执行时间。在大多数情况下,没有必要优化:这是根本不值得花费的时间。

我会做的 sprintf.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top