カレンダー最新コメント最新記事(03/29)
(11/09)
(06/29)
(02/10)
(09/19) 最新トラックバックプロフィールブログ内検索最古記事アクセス解析忍者アナライズ |
ブログ日記のようなものPAGE | 2117 918 917 916 915 914 913 912 911 910 909 | ADMIN | WRITE 2009.08.22 Sat 21:35:44 自力って大変。今日は。
朝はぐったり。 昼からプログラミング。 あ、プログラムより先にグラフィック作らんと・・・(今思い出した) で。プログラミングしてる内容ですが。 自作printfに挑戦中。 いや、DSで文字列表示させるためにプログラム組んでるけど、 変数渡したらのまま表示してくれるって便利じゃね? 「残り○○(数字)」とかで、数を変数に入れててさ。 "残り%d" で表示できるようになったら・・・うん。なんか幸せ。 というわけで。いろいろ調べてみました。 はてさて。printfの特徴といえば・・・ printf( "%d", a ); も printf( "%d%d%d", a, b, c ); もできちゃうこと。引数に制限個数なんかないはず。 どうやら本来のprintfは可変引数のようです。 ・・・なにそれ。 ようはいくらでも変数渡せちゃうわけです。 そんな関数自作できるんかぁ?? なんと。できるようです。 int printf( const char* format, ... ) こんな感じで引数書いて・・・ va_list list; で引数を参照するためのva_list型の変数(list)を用意して・・・ va_start( list, format ); で「今からformatより後ろの引数使います」的な宣言して・・・ va_arg( list, 型名 ) で引数の中を指定した型(intとかdoubleとか)で取り出して・・・ va_end( list ); で「使い終わったよ」的宣言をして終了。 va_arg( list, 型名 )は使うと次の引数から参照するようになるらしくって、 1回目のva_argで1個目の引数、2回目のva_argで2個目の引数ができてしまう。 つまり。 int Ival = va_arg( list, int ); // ←1個目の引数をint型で参照 double Bval = va_arg( list, double ); // ←2個目の引数をdouble型で参照 とかとか。 ただ、これをしようと思ったら #include が必要らしい。これDSでも使えんのかぁ〜? まぁできなかったら諦めるけどね。うむ。 とりあえず現状は文字列を前から参照して、 %がくるとint型で表示して、他の文字はそのまま表示する状態。 そう。intの内容をそのまま表示するようにするのも結構大変なのよね。 だって文字の'0'は0じゃないんだもん。48なんだもん。 困るわぁ。仕方ないけど。でも実はsprintfとかitoa( int )で数字の0を'0'に直して くれたりするらしいんだけど、非標準だってさ。多分使えないなぁ。 ここから他の型も参照できるようにせねば。むむんむん。 PR TrackbacksTRACKBACK URL : CommentsComment Form |