ファイルを読込ませる方法を教えてください。

[戻る]
ひろ 2004/10/22(金) 17:52:06
/*    ファイルオープン    */
    CFile m_File;
    CFileException fileException;
    CFileStatus status;
    
    /*  読み込みファイル   */

    if ( !m_File.Open( m_FileName, CFile::modeRead ), &fileException )
    {
        TRACE( "Can't open file %s, error = %u\n", m_FileName, 
fileException.m_cause );
    }

    /*    ファイルのステータス取得    */
    m_File.GetStatus( status );

    /*    ファイルサイズの表示        */
    char msgs[128];
    sprintf( msgs, "ファイルサイズは [%ld]Byte です。", status.m_size );
    AfxMessageBox( msgs, MB_OK );

     void *ptr;
    
    /* ファイルサイズを格納する領域の割り当て */
    ptr = malloc( status.m_size );

ファイルを開いて、ファイルサイズを取得しています。
ここから、ファイルを全て読込ませるにはどうしたらよいのでしょうか?
ご存知の方おられましたら、教えて頂けると助かります。
よろしくお願い致します。

m_File.Read(&ptr,sizeof(status.m_size));

上記の様に記述するとエラーになってしまいます。

2004/10/22(金) 18:00:45
m_File.Read(ptr, status.m_size); ではなく
>m_File.Read(&ptr, sizeof(status.m_size));

にしたわけは何ですか?

Blue 2004/10/22(金) 18:01:55
>>m_File.Read(&ptr,sizeof(status.m_size));

&はいらない気がしますが。。。

Blue 2004/10/22(金) 18:03:42
よくみたらsizeofもでしたw

ひろ 2004/10/22(金) 18:05:14
m_File.Read(ptr, status.m_size); ではなく
>m_File.Read(&ptr, sizeof(status.m_size));

MSDNのヘルプ等を見て試行錯誤していまして
いろいろと試してみたらいまの記述になりました。
&ptrに関しては、データの一番最初のアドレスを参照すると
自分で認識しているので、"&"は必要なのかなと思ってつけました。

sizeofは、付けてみただけです。

初心者なもので、質問の回答になっていない場合は、
申し訳ありません。

ひろ 2004/10/22(金) 18:12:07
島さま、Blueさま、ご指摘ありがとうございます。
&とsizeofを削除したら、エラーなくなりました。

重ね重ね申し訳ないのですが、
読み取ったファイルの先頭から、13バイト目〜16バイト目までのデータを
(現状: 0x00000001)を → 0x00000005 に書き換えたい場合、
どのような記述をしていけばいいのでしょうか。。

ひろ 2004/10/22(金) 18:26:57
long *b_ptr = (long*)ptr;
    b_ptr[3] = 0x00000200;
    
    m_File.Write(ptr,status.m_size);

上記の様に記述したら、うまく書き換えられました。
お手数をおかけしました。
そして、アドバイス有難うございました。

ひろ 2004/10/22(金) 18:32:12
[[解決]]
解決済みのチェック忘れてました。

古いスレッドには追加発言できません。