CS+で16進8桁で表示するために次のように書きました。sprintf (Str, "DEF = %08X\r\n" ,1023)しかし、次のように表示されます。DEF = %8X
期待するのは、DEF = 000003FF です。
オーとゼロを間違えたかと思い確認しました。
sprintf (Str, "DEF = %8X\r\n" ,1023) とすれば
DEF = %8X と表示されます。
sprintf (Str, "DEF = %X\r\n" ,1023) と書けば、DEF = 3FF と表示されます。
使い方が間違えていますか?
%08Xは頭0埋めですよね。可能性として考えられるのは整数のビット長の扱いで%08lXにすると解決するかもしれません。
お使いのコンパイラのマニュアルを読んで、printf/sprintf 系の実装の解説を読みましょう
組み込み用途のコンパイラ(ライブラリ?)では、printfやscanf系統の関数の実装はサブセットとなってます
その関数を自分で実装することを考えてみるとわかりますが、フルセットのsprintfを実装しようとすると、膨大なコード量となってしまいます。
このため、組み込み系のコンパイラでは、一部の機能のみの実装となってるのがほとんどですね
早速の回答有難う御座います。
%08IX %08iX でやってみたけど駄目でした。
秋月電子の H8/3048 のキットに付いてくるコンパイラでやったときは問題無かったと思います。
その時にメモと「プログラミング言語C B.W.カーニンハン」を参考にしたのですが。
ちなみにコンパイラはCC-RL?CC-RXでは私はprintfで%04Xとかは正常に動作することを確認しています(charputを有効化してでUSBシリアル出力)。
リカルドさん、
CS+で利用しているコンパイラは何でしょうか? CC-RXとかCC-RLとか?
書式的に問題はないのでCC-RXで試してみましたが、小生の方のシミュレータではちゃんと動作しており、リカルドさんが期待している結果になってます。
C89とC99のどちらも大丈夫でしたよ!
。回答有難う御座います回答有難う御座いますかいとうありがとうございmかいとうありがとうございとうありがとうgかいとうありがとうgかいとうありがとうgかいとうありがtかいとうありgかいとうあrかいt
書けない。かけnまともにkまともnまとmまtおかしいな。mおかしいnおかsおk
回答有難う御座います。
このフォーラムに書き込もうとすると、ときどきおかしな動作をします。
テキスト・エディタに書き込んだ物を貼り付けました。
CS+の左のツリー構造の所に CC-RX(ビルドツール) となっているから。CC-RX だと思います。