【发布时间】:2014-06-28 09:54:13
【问题描述】:
我想将字符串文字附加到目的地。我可以使用strcat 或strncat:
strcat(dest, "values");
或者
strncat(dest, "values", sizeof("values") - 1);
strcat 的代码更短,看起来很整洁。
但我想知道它们的运行时性能。
strncat 在运行时是否会稍微快一些,因为不需要定位终止符?
或者也许编译器可以进行优化,所以没有区别?
【问题讨论】:
-
无论哪种方式,都需要找到
dest的空终止符。无论哪种方式,代码都需要遍历"values"中的所有字符。所以没有区别。 -
@OliCharlesworth 我认为
strncat会读取到字节s,而strcat会再读取一个字节,即空终止符。我一开始就错了? -
@OliCharlesworth -
strncat将使程序员能够防止缓冲区溢出。strcat没有这种奢侈 -
@EdHeal:确实。我只是在假设一个比另一个更快的前提下发表评论。
标签: c string compiler-construction concatenation