C语言中的高效字符串连接

hel*_*hod 0 c string-concatenation

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

我需要做的是以下内容

  • 创建一个字符串,由cmd和args的组合组成,例如:

cmd arg1 arg2 arg3

  • 执行该命令字符串

这是我如何做到这一点(伪代码):

  1. 预先计算每个arg的长度并将其存储在一个数组中
  2. 获得组合(使用GNU Scientific Library)
  3. 计算分配字符串所需的字节大小(cmd + 1的长度+ arg1 + 1 + argn-1 + 1的长度)(通常为空白的+1和\ 0的末尾)
  4. 使用strcat构建字符串
  5. 执行命令字符串

好吧,它的确有效,但我想知道是否故意使用strcat实际上是有效的/正确的方法.

有什么建议?

unw*_*ind 5

不,使用strcat()效率不高,因为每次调用它时必须单步执行字符串以查找结尾.

snprintf()如果你拥有它(并且可以在那里挤压你的参数),或者使用直接指针操作自己做,那么要么一次性使用它要好得多.

当然,为了实现这一点,你需要经常运行这个命令.