有没有办法直接在函数参数中格式化字符串而不是使用临时字符串?

我有一个接受字符串(char数组)作为参数的函数。

void enterString(char * my_string); 

使用此function时,我经常发现自己想要输入格式化的字符串。 我使用sprintf来做到这一点。 但是,每次我必须创建一个临时字符串有点烦人:

 char temp_str[100]; sprintf(temp_str, "My lucky number = %d", 11); enterString(temp_str); 

有没有办法在函数参数中直接格式化字符串,所以我不必每次都创建一个临时字符串? 就像是:

 enterString("My lucky number = %d", 11); 

谢谢

你不能在C中这样做(不像其他语言,如python,它具有%运算符或str.format函数的字符串的内置格式)。

但是,由于您的方法看起来像是要打印带有变量参数的格式化消息,因此您可以使用可以接受va_list参数的vfprintf ,这样您就可以将变量参数传递给内部函数。

 #include  #include  void enterString(const char *format,...) { va_list argptr; va_start(argptr, format); vfprintf(stdout, format, argptr); va_end(argptr); // rest of the processing here } int main() { enterString("My lucky number = %d", 11); return 0; } 

printf相比,这并没有带来太大的影响,但是现在您已经拥有了这个,您可以添加“详细”模式的检查,登录到文件,打印前缀,日期,…等消息之前。 。