(DXライブラリで書いてたのですがコードが長すぎるので、コンソール用の簡単なサンプルを作りなおしました。)
#include <stdio.h>
#include <windows.h>
//<windows.h>はSleep()を利用するためのものです。
int printf2(const char *format, ...)
{
printf(format);
}
int main(void)
{
//◆本文のみで2番目以降の引数なし
printf2("私の戦闘力は53万です\n") ;
//◆引数が2つ以上の場合
printf2("私の戦闘力は%d万です\n",53);
Sleep(10000); //コンソールがすぐに閉じないよう10秒待機
return 0;
}
私の戦闘力は53万です
私の戦闘力は1638216万です
オリジナルのprintf()関数で実行したら2行目も、1行目と全く同じ結果になるのですが、
作ったprintf2()関数を使うと、2行目は、どこか不明のアドレスから数値を引っ張り込んできたように思います。
何がやりたいかというと、printf2()関数でもprintf()関数と全く同じ結果を出したいのですが、やり方がわかりません。
可変の引数を持つ関数の引数を、そのまま別の関数に受け渡しするのはややこしいのでしょうか?