在大學學習C。這不是一項家庭作業,但我正在嘗試做一些事情(作業中的某些「創意」部分)並陷入困境。C:printf中的sprintf作爲第一個參數
我明白,這是可能的
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"
}
這甚至可能嗎?到目前爲止,我在執行時遇到seg故障。
優秀!你有我的尊重,我站在糾正:)我從來沒有聽說過這種行爲(閱讀http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html) – 2010-10-08 15:46:20