(toppers-users 1445) Re: sprintfの替わりになる関数

高木信尚 takagi @ oct.zaq.ne.jp
2004年 5月 7日 (金) 15:14:00 JST


谷川様 

高木と申します。よろしくお願いいたします。

> ところで, sprintf 関数を使ったところ,案の定,サイズ
> が+100kb ぐらい増えてしまいました。正しく動作はするの
> ですが…

jsp.exeは100kバイト近く増えるようですが、text/data/bssの合計
は32kバイト程度かと思います。

> それで何とか Newlib 無しで簡易的に sprintf と同等の事
> を実現できないでしょうか? syslog 関数が書式文字列が使
> えるので,何とか簡単に代替できないか…と思って試行錯誤
> しています。書式文字列はとりあえず %d があれば事足りま
> す。

syslog_printf関数の第3引数(putc)に配列への出力関数を指定
すれば、とりあえずは実現可能です。
ただ、putcは出力する文字しか引数にとれないため、リエント
ラントになりません。また、可変個引数より使い勝手もよく
ないでしょうし、末尾に必ず改行文字が付加されてしまう点も
場合によっては問題かと思います。そして、最後のナル文字は
自分で追加する必要があります。

Newlibを使ってもよいのであれば、sprintfの代わりにsiprintfを
使うのもひとつの方法です。siprintfは浮動小数点に対応しない
代わりにサイズが約半分になります。

----------------------
高木信尚