/* ファイルオープン */
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));
上記の様に記述するとエラーになってしまいます。
m_File.Read(ptr, status.m_size); ではなく
>m_File.Read(&ptr, sizeof(status.m_size));
にしたわけは何ですか?
>>m_File.Read(&ptr,sizeof(status.m_size));
&はいらない気がしますが。。。
よくみたらsizeofもでしたw
m_File.Read(ptr, status.m_size); ではなく
>m_File.Read(&ptr, sizeof(status.m_size));
MSDNのヘルプ等を見て試行錯誤していまして
いろいろと試してみたらいまの記述になりました。
&ptrに関しては、データの一番最初のアドレスを参照すると
自分で認識しているので、&は必要なのかなと思ってつけました。
sizeofは、付けてみただけです。
初心者なもので、質問の回答になっていない場合は、
申し訳ありません。
島さま、Blueさま、ご指摘ありがとうございます。
&とsizeofを削除したら、エラーなくなりました。
重ね重ね申し訳ないのですが、
読み取ったファイルの先頭から、13バイト目~16バイト目までのデータを
(現状: 0x00000001)を → 0x00000005 に書き換えたい場合、
どのような記述をしていけばいいのでしょうか。。
long *b_ptr = (long*)ptr;
b_ptr[3] = 0x00000200;
m_File.Write(ptr,status.m_size);
上記の様に記述したら、うまく書き換えられました。
お手数をおかけしました。
そして、アドバイス有難うございました。
解決済みのチェック忘れてました。