«前の日記(2006年08月08日) 最新 次の日記(2006年08月10日)» 編集

日々をアレコレ


2006年08月09日

vprintf,vsprintf,vfprintf

ANSI Cで関数の引数に文字列+可変長引数とした場合に、printf,sprintf,fprintfの各出力関数と同等のことをするには次のようにする。

/* printfの場合 */
int hogeprintf( char *pszFmt, ... )
{
    va_list ap;

    va_start( ap, pszFmt );
    vprintf( pszFmt, ap );
    va_end( ap );

    return 0;
}

/* sprintfの場合 */
int hogesprintf( char *pszFmt, ... )
{
    va_list ap;
    char szOutput[256];

    memset( szOutput, NULL, sizeof(szOutput) );
    va_start( ap, pszFmt );
    vsprintf( szOutput, pszFmt, ap );
    va_end( ap );

    return 0;
}

/* fprintfの場合 */
int hogefprintf( char *pszFmt, ... )
{
    va_list ap;
    FILE *fp;

    /* fprintfの場合 */
    fopen( fp, /* 読み込みファイル */ );
    va_start( ap, pszFmt );
    vfprintf( fp, pszFmt, ap );
    va_end( ap );
  fclose( fp );
    return 0;
}

ただし、ANSI-Cに準拠している場合にのみ対応することに注意。

Borlandが“Turbo”ブランドを復活,YouTubeに広告を投稿(ITPro)

開発環境のMicrosoft以外の選択肢が増えるのは喜ばしいことだ。

あと、次のことも初めて知った。

Turboには,コンパイル/リンク時間が高速という意味がある。

何と比べての話なんだろう。

惜しい

昨日注文したRB1000は、在庫がないらしく18日発送になるとのこと。社会人にしては長い夏休み中ずっといじっていようかと考えていたけど無理みたい。とりあずは、公開されているシリアル通信プロトコルを参考にロボットを動作させるためのソフトでも作ろうかな。


«前の日記(2006年08月08日) 最新 次の日記(2006年08月10日)» 編集