FRK-RX62N (20) scanf KPIT GNURX ― 2011年07月20日 20時43分29秒
scanf といえば指定したフォーマット以外を入力した時、それ以降の scanf が使えなくなる。
本番ではあまり使わないが Debug では時々使うこともある。
という訳で scanf の動きを調べてみることにする。
まずは、 Simulator で試してみよう。
FRK-RX62N (19) printf (7) KPIT GNURX Simulator をベースに printf と scanf の無限ループに変更して試す。
最初は Optimized ライブラリだ。
予想に反して問題なく動いている。(右図)
Optimized ライブラリすばらしい!!
それでは次に Newlib ライブラリでやってみる。
数字の変わりにアルファベットの a を入れるとご覧の通り。
printf だけが連続して実行されてしまう。
それでは scanf の前に fflush 又は rewind を入れてみる。 上図のように予定通りバッファがクリアされて問題なく動いている。
しかし、Optimized ライブラリとは表示が若干異なる。
というわけで
・Optimized ライブラリでは何もしなくてよい。
・Newlib ライブラリでは従来どおり fflush 又は rewind を使わなければならない。
ということがわかった。
念のためシリアルポートを使った場合も試してみたが結果は同じだった。
参照:Renesas Application Notes RX600 Series Adding Printf and Scanf Support (R01AN0509EU0100)
環境:High-performance Embedded Workshop Upgrade 4.09.00
KPIT GNURX v11.02 Windows Tool Chain (ELF)
本番ではあまり使わないが Debug では時々使うこともある。
という訳で scanf の動きを調べてみることにする。
まずは、 Simulator で試してみよう。
FRK-RX62N (19) printf (7) KPIT GNURX Simulator をベースに printf と scanf の無限ループに変更して試す。
最初は Optimized ライブラリだ。
予想に反して問題なく動いている。(右図)
Optimized ライブラリすばらしい!!
それでは次に Newlib ライブラリでやってみる。
数字の変わりにアルファベットの a を入れるとご覧の通り。
printf だけが連続して実行されてしまう。
それでは scanf の前に fflush 又は rewind を入れてみる。 上図のように予定通りバッファがクリアされて問題なく動いている。
しかし、Optimized ライブラリとは表示が若干異なる。
というわけで
・Optimized ライブラリでは何もしなくてよい。
・Newlib ライブラリでは従来どおり fflush 又は rewind を使わなければならない。
ということがわかった。
念のためシリアルポートを使った場合も試してみたが結果は同じだった。
参照:Renesas Application Notes RX600 Series Adding Printf and Scanf Support (R01AN0509EU0100)
環境:High-performance Embedded Workshop Upgrade 4.09.00
KPIT GNURX v11.02 Windows Tool Chain (ELF)
コメント
トラックバック
このエントリのトラックバックURL: http://syslab.asablo.jp/blog/2011/07/20/5965484/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。