在大学学习 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/