【发布时间】:2017-10-27 02:14:41
【问题描述】:
给定一个char *str = "something %s something2 %d",我怎样才能格式化它并生成一个新字符串而不打印出来?我知道“printf”会打印出结果,但我不需要打印出结果。
【问题讨论】:
-
您正在寻找
snprintf()及其亲属。
标签: c
给定一个char *str = "something %s something2 %d",我怎样才能格式化它并生成一个新字符串而不打印出来?我知道“printf”会打印出结果,但我不需要打印出结果。
【问题讨论】:
snprintf() 及其亲属。
标签: c
答案是sprintf:它恰好是缓冲区的printf。
【讨论】:
sprintf,而总是推荐snprintf或类似的。
snprintf() 的返回值(是否为负且太大),否则臀部生成的字符串本身就是一个问题。如果目标不足,则不应使用 snprintf() 或 ``sprintf()`。..
snprintf 有人会抱怨微软有更好的......哦,等等,他们已经做到了。
%100 严格且不可见地联系在一起。
你想要snprintf。就像printf,但是你给它一个目标缓冲区和一个大小。 (大小很重要,所以snprintf可以确保不要溢出它。)这样使用它:
char outbuf[100];
snprintf(outbuf, sizeof(outbuf), "%d %f %s %c", 1, 2.3, "four", '5');
【讨论】: