////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2003/11/24(Mon) No.233
    配信数： 2750 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００３年１１月２４日（月）の更新              */
http://www.kab-studio.biz/index.html

・ほとはー１話追加
　三人合体ホットハーブに７の１を追加。７話スタート！
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.biz/nikki2/index.html

2003/11/16 (Sun)
　お昼に目が覚めたくらいなのにまだ眠い。洗濯してラーメン食べてほと
はー描いて。ほとはー折り返し。最初は手描きだった。いつのまにか毎週追
加に。長い長い道のりのまだ途中。もみ、パプリカ、バジル、ハオシャオの
おいたち。これからの予定。絶対にやめません。ふもっふ最終回か……。

2003/11/17 (Mon)
　忙しい。色々てんてこまい。画面まわりのデバッグが……。麻婆定食いい
感じ。マジ疲れた……。

2003/11/18 (Tue)
　ファイルマージに FTP 。体重を維持する方法。プラネテスがいい感じ
だった。電通大でゲーム大会。そして早く帰るコツとマウス。

2003/11/19 (Wed)
　現プロジェクトがかなりやばい。それを来週までに動かせる状態に？　そ
してカレーミュージアムバイキング。そして面白いこと。

2003/11/20 (Thu)
　画面との結合確認。細かい折衝のおかげでなんとか回ってる？　えらい密
結合な気がする。 Fate をアマゾンで予約。ふもっふ最終回。

2003/11/21 (Fri)
　ミーティングは中止に。代わりに明日の資料を作成。月曜日に仕事。餓狼
伝説と SHORT CIRCUIT をアマゾンで予約。別々に買っても同時配送にでき
るのがすごい。

2003/11/22 (Sat)
　９時半から休出。最近「先生」っぽい。教えるってのはエンターテイメン
トではないかと。４時半に上がって福田研ゼミＯＢ会へ。経営コースゆえ
に。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第九章　四人　−１０−

「たく、この忙しいときにふたりはどこにいるんだ！？」
　鷹人はノートに書かれた陣形図と人の配置を見比べつつ、そう愚痴た。
「いない方が役に立ってるかも」
「いや、今忙しくさせとかないと寝て後で役に立たなくなる」
「違いない」
　穂香はくすくすと笑った。
「ま、赤葉が一緒だから大丈夫でしょ」
「ああ。川藻！　柚子！　東治はこっちだ！」
　呼びつけた３人に配置場所を指定して、どう動けばいいのか指示を出す。
　集まったのは、村人２８人の内、男女併せて１９人。強制的に連れて行か
れた子供達を除いた村人全員が残っていた。
「そう、まずここに誘い込んで……そう！」
　鷹人は自分を敵役にしたてて、３人にどうすればいいかを説明する。仮に
作られた罠を動かして、鷹人を捕らえてみる。
「あとは罠を作るだけだ。わからないことがあったら穂香か陣八に訊いてく
れ」
「はい！」
　見つめられていることに鷹人は気付く。
「どうした、穂香」
「だって、これが見納めかもしれないから」
　穂香の唇は笑っていたが、目は真剣だった。
「……やっぱり」
「思ってもないことは、言うな」
　穂香は釘を刺して、鷹人の言葉を遮った。
「正直、私は変わる自信あるよ。でもね、村を捨てるのは、嫌だ」
　軍が攻め入る先を睨み付けて、穂香は続ける。
「結構自信あるよ、私も、鷹人も、みんな生き残ることができるって」
「もちろんだ」
　鷹人は、率直に肯定した。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『来週はあたしの表紙壁紙〜』
「……あんまり期待しない方がいいかも」
『え”』
http://www.kab-studio.biz/index.html
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 12.10
複数のバイナリーデータの読み書き

「今回は、前回の補足的な部分を見ていきます」
『前回の補足？』
「まず、複数のデータを書き込むって処理をします」
『そういえば前回は int だけだったね』
「ま、実際のところ難しいことは何もないんだけど」

void Write2BinaryFile()
{
    // ファイルを開きます。
    FILE *pstFile
        = fopen( "2Binary.aaa", "wb" );
    if( !pstFile )
    {
        TRACE( "ファイルが開けない！\n" );
        return;
    }

    // 0x0000ABCD を書き込みます。
    int i = 0x0000ABCD;
    fwrite( &i, sizeof( i ), 1, pstFile );

    // 実数 2.0 を書き込みます。
    double d = 2.0;
    fwrite( &d, sizeof( d ), 1, pstFile );

    // ファイルを閉じます。
    fclose( pstFile );
    return;
}

『ホント、 fwrite() 呼ぶのが２回になったってだけね』
「 fwrite() だけじゃなく、 fprintf() とか fputc() もそうだけど、書き
込む度に〈次に書き込む位置〉が進むから、どんどん書き込めば後ろに追加
していくからね」
『それって前に言ってた、別の意味の【ファイルポインタ】のこと？』
「そういうこと。 Version 5.12 ( No.077 ) でやったね」
『あのときは読み込みのだったけど』
「これは読み書き両用だからね。さて、これでファイルに書き込めたから、
実際にファイルを見てみます」
『前回と同じ、バイナリーで見ればいいんだよね』
「そう」
『ん、こんな感じに入ってたよ』

000000  CD AB 00 00 00 00 00 00  00 00 00 40

「先頭４バイト、つまり」

CD AB 00 00

「までが i を書き込んだ部分」
『これは前回と同じね。ってことは、その後ろが』
「 d を書き込んだ部分」

00 00 00 00  00 00 00 40

「の８バイトだね」
『……って、この前教わったのと継ながらない……』
「 i と同じくバイトオーダーがあるから」
『前後逆だし、ビット単位じゃないとわかんないね』
「ま、それは仕方ないかな int に比べれば、 double を直に見て数値に変
換する、ってことはあまりないと思うし」
『だねー』
「では次に、このファイルを読み込んでみます」
『お。これも前回やってないね』
「でも、ほとんど同じだけどね」

void Read2BinaryFile()
{
    // ファイルを開きます。
    FILE *pstFile
        = fopen( "2Binary.aaa", "rb" );
    if( !pstFile )
    {
        TRACE( "ファイルが開かない！\n" );
        return;
    }

    // int を読み込みます。
    int i;
    fread( &i, sizeof( i ), 1, pstFile );
    TRACE( "0x%08X\n", i );
    // 0x0000ABCD

    // double を読み込みます。
    double d;
    fread( &d, sizeof( d ), 1, pstFile );
    TRACE( "%.20f\n", d );
    // 2.00000000000000000000

    // ファイルを閉じます。
    fclose( pstFile );
    return;
}

『なんか対称って感じ』
「まず、 fopen() 」

        = fopen( "2Binary.aaa", "rb" );

『読み込みだから、 w が r になってるんだね』
「あと、書き込みがバイナリーモードだったから、読み込みもバイナリー
モード。次は、読み込み部分」

    fread( &i, sizeof( i ), 1, pstFile );

『 fwrite() が fread() だね』
「 fread() はファイルからデータを読み込むランタイム。引数とかはほと
んど fwrite() と同じだから、説明の必要はないかな」
『楽ねー。そのあとは一緒ね』
「そう。こうやってみると、バイナリーの読み書きって簡単でしょ」
『うん、簡単！　って、前回とか、テキストの方がいいって言わなかったっ
け？』
「今の例は簡単だからね。自分のアプリで書き込んで、自分のアプリで読み
込むから」
『それはこの前聞いたけど、それが普通なんじゃない？』
「そうだね。もうひとつあげると」
『テキストで修正できないって言うけど、それはそれでメリットなんで
しょ？』
「それも場合によるかな。今は簡単に作れたけど、たとえば、ファイルに書
き込む部分を作るのにとても時間が掛かる場合、それが完成しないと読み込
む部分が作れないでしょ」
『あ、ファイル作れないから……』
「そう。まぁ作れなくもないけど、テキストファイルなら簡単に作れるし、
テスト用のファイルをテキストを変えるだけで作れるから」
『なるほど、バイナリーだとファイルに書き込む機能を先に作らなきゃいけ
ないし、テストデータを作るにもその書き込む機能を使わなきゃいけない』
「そういうデメリットが特にないならバイナリーでもいいかな。メリットも
あるし」
『たとえば？』
「たとえば、今、 double を書き込んだけど、これを文字列として書き込む
場合」
『んー、 fprintf() とか使えばいいんじゃない？』
「精度の問題があるでしょ、誤差とか」
『あ”…… 1.1 とか困るね……』
「 double は誤差が出るし、 fprintf() で出力するにしても、精度、つま
り出力する桁数を気にしなきゃいけないから」
『長くするとデータ大きくなるね』
「でも桁数を減らすと、書き込んでから読み込む、と値が違うって可能性が
あるわけ」
『それは嫌……』
「そういうことを考えると、バイナリーの方が簡単でしょ」
『……質問！』
「はい、火美ちゃん」
『テキストとバイナリーって混ぜられないの？』
「混ぜようと思えば混ぜられるけど……テキストだって、バイナリーの一種
だから」
『あ、そーか、文字列って見なせるものがテキストでそれ以外はバイナリー
なんだもんね』
「 fwrite() でテキストを書き込む場合は、こんな感じ」

void WriteTextToBinaryFile()
{
    // ファイルを開きます。
    FILE *pstFile
        = fopen( "TextBinary.aaa", "wb" );
    if( !pstFile )
    {
        TRACE( "ファイルが開けない！\n" );
        return;
    }

    // 文字列を書き込みます。
    const char *const DATA = "ABCDE";
    fwrite( DATA, sizeof( char ), strlen( DATA ), pstFile );

    // ファイルを閉じます。
    fclose( pstFile );
    return;
}

『テキストでも fwrite() で書き込めるんだね』
「使い方もこれまでと同じ」
『あ、でも第３引数が 1 じゃないね。そか、第２引数が char のサイズだ
から、その代わりに第２引数に文字数入れてるんだね』
「そういうこと。結局は、第２引数と第３引数を掛けたものが、書き込む
データのサイズになればいいんだけど」
『だったらそう第２引数に書いてもいいんじゃないの？』
「そうかもね。その辺は好みでいいかも」
『好み……』
「 fwrite() は、第１引数のアドレスから、第２引数 * 第３引数バイトま
でをそのままファイルに書き込む、それだけだから」


/*
    Preview Next Story!
*/
『やっぱ結局は、ひとつひとつって感じね』
「プログラムはその積み重ねだからね」
『ううん、そうじゃなくてファイルの書き込み』
「あー、それは大丈夫。構造体使えばいいから」
『構造体？』
「そう、次はその話」
『というわけで次回』
＜ Version 12.11 パディングとアライメント ＞
「につづく！」
『ってタイトル構造体と関係ないじゃん！』
「でも実は関係してたり」


////////////////////////////////////////////////////////////////////
/*                ２００３年１２月１日（月）の更新                */
http://www.kab-studio.biz/index.html

・ほとはー１話追加予定
　三人合体ホットハーブに７の２を追加予定。

・表紙壁紙？
　さーて出せるかなー。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2003 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

