在大学学习 C。这不是家庭作业,但我试图做一些事情(作业的一些“创造性”部分)并被卡住了。

我明白这是可能的

printf("%d\n", printf("23.4")); // -> 23.44 (i.e. 23.4 + 4 bytes written)

但是如何使用 sprintf() 作为 printf() 的第一个参数?

就像是 :
char * getFormatString(int n) {
   char * buffer;

   sprintf(buffer, "Value with %%d decimals is %%.%df", n);

   return buffer;
}

void foo() {
   int decimals = 2;
   float pi = 3.141592;

   printf(getFormatString(decimals), decimals, pi);  // should output "Value with 2 decimals is 3.14"
}

这甚至可能吗?到目前为止,我在执行它时遇到了段错误。

最佳答案

为此目的使用 sprintf 是不正常的。而是尝试:

printf("Value with %d decimals is %.*f", decimals, decimals, pi);

关于: sprintf inside printf as first argument,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3891994/

10-11 22:42