【发布时间】:2014-12-05 02:30:16
【问题描述】:
有没有像 printf 这样的函数可以返回一个字符串而不是打印它?我有一个以某种颜色打印字符串的函数,但它必须是字符串文字,而不是接受 printf 之类的变量。
// Function declaration (Assums YELLOW and NORMAL are the unix constants for terminal colors
void pYellow(char *str) {
printf("%s%s%s", YELLOW, str, NORMAL);
}
//Function call
void pYellow("This is a string");
如果我想用变量进行彩色打印,它就行不通了。像pYellow("Num: %d", 42); 一样会报错,因为它的参数太多了。而且pYellow(printf("String")); 也行不通。
TL:DR 我想知道是否有一个 printf 方法返回一个字符串而不是打印它。
【问题讨论】:
-
您可以按照
dom0的建议使用snprintf,也可以使用动态分配内存并返回指针的函数。有一个非标准的称为asprintf,但是您可以通过委托给vsnprintf在标准 C 中用几行代码实现它。
标签: c string function return printf