首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strcat() vs sprintf()

strcat() vs sprintf()
EN

Stack Overflow用户
提问于 2009-11-21 02:53:12
回答 5查看 16.7K关注 0票数 15

哪种方式更快?这一点:

代码语言:javascript
复制
sprintf(&str[strlen(str)], "Something");

代码语言:javascript
复制
strcat(str, "Something");

性能上有什么不同吗?

EN

回答 5

Stack Overflow用户

发布于 2009-11-21 02:56:29

strcat会更快,因为sprintf必须首先扫描字符串以查找格式变量。

但真正的胜利是,每个人都知道strcat在做什么--连接字符串。使用sprintf进行连接并不是一种标准用法。这会引起人们的双重反感。

票数 26
EN

Stack Overflow用户

发布于 2009-11-21 02:56:50

如果要在两者之间进行选择,我会选择strcat;它肯定更具可读性,并且可以清楚地表明您的意图。它也可能比sprintf稍微快一点,但可能不会快太多。

但是,无论您选择哪种方法,都绝对应该使用snprintfstrncpy来保护缓冲区溢出。

您将这个问题标记为cc++;如果您使用的是C++,那么使用std::string会好得多。

票数 11
EN

Stack Overflow用户

发布于 2009-11-21 02:57:08

如果存在差异,那么这种差异会根据编译器标志、代码运行时的计算机使用情况、库实现等因素而有所不同。

对于您的特定情况,请使用度量

运行这两个代码片段几十亿次,并对它们进行计时。

我非常怀疑你会发现有什么显著的区别。

我更喜欢strcat():它清楚地表达了代码的含义。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1772536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档