sprintfのバグ発見してしまいました。
__int64型の数字を%dで二つ入力すると二つ目の数が0になります。
char buf[32];
__int64 iTest1 = 30000, iTest2 = 20000;
sprintf(buf, "%d\t%d\t\n", iTest1, iTest2);

ちなみに環境はVC++.NET