3
在該示例中此代碼編譯雖然它不會產生正確的結果:當使用另一個函數封裝printf和vfprintf時,這種差異的原因是什麼?
void encapsulatePrintf(const char *str, ...) {
va_list argptr;
va_start(argptr, str);
printf(str, argptr);
va_end(argptr);
}
,然後在主:encapsulatePrintf("test str: %i - %s", 22, "test2");
- 結果是隨機字節形式某處存儲:
test str: 2293428 - á "
但是當我將功能從printf
更改爲vfprintf(stdout, str, argptr);
- 所有的輸出都可以。
這是怎麼回事?