自作のprintf関数で%dの整数が出力できない
前回、
http://okwave.jp/qa/q9193570.html
こちらのサイトでH8S2368にprintfを追加したい内容の質問をした者で、その続きです。
現在H8S2368が搭載されている基板で使用していなかったSCI0のUARTを次のコードの
void mprint_test_sci0(char *fmt, ...)
この新たに追加したmprint_test_sci0というprintf関数で出力できるようになりました。
https://github.com/KenjiMaehara/ios_apply_test/blob/20150720_test/H8S2368_console/console/console.c
しかし、
mprint_test_sci0("test value");
この場合”test value”という文字列がちゃんと出力できます。
しかし、
mprint_test_sci0("test value %d %d %d %x \n\r",1,2,3,4);
この場合、
”test value 65538 196612 900554 ff587e”
このように、%dの整数値の部分が全然違う値で出力されてしまいます。
別のコードで
mprint_test_sci0("test value %d %d %x %x \n\r",1,1,1,1);
この場合は
”test value 65537 65537 dbdca ff587e”
このように出力されます。
正しい整数値をこのmprint_test_sci0のprintf関数で出力するにはどのように改善したらよいか、ご教示頂きますよう、よろしくお願い致します。
お礼
ありがとうございます。 printf(" ", "test"); が printf("test"); となることを期待しているのではなく、 char prstr[] = " %s "; printf(prstr, "test"); でprstrに%が無いような場合があってもよいのか知りたいです。 C++の文法に詳しい方教えて下さい。