CFileを使用する場合、何らかの理由で、read()を呼び出すと、最初の呼び出しの後に0バイトが返されます。
CFile iniFile;
int bytesRead=0;
char buffer[_MAX_PATH];
if(iniFile.Open(iniDirFilename,CFile::modeRead)){
bytesRead += iniFile.Read(buffer,_MAX_PATH); // read file path
SaveDirectoryBox->SetWindowTextA(buffer);
iniFile.Seek(bytesRead,CFile::begin); // reposition pointer
int x =iniFile.GetLength();
int y =iniFile.GetPosition();
bytesRead += iniFile.Read(buffer,_MAX_PATH); // read subfile path
subSaveDirectoryBox->SetWindowTextA(buffer);
iniFile.Seek(bytesRead,CFile::begin); // reposition pointer
}
明らかにそれ以上であることがわかっている場合、ファイルの長さはわずか72バイトであることがわかります。nullで終了する文字列をたくさん保存しました。たとえば、「Hello」の場合、構築時にCFileクラスが最初のNULL文字を探し、それをファイルの終わりと呼んでいると思います。setLength()関数を使用しようとしましたが、エラーが発生します
ファイルの残りの部分を読み取るにはどうすればよいですか?
編集:
私のプロジェクトはASCIIでの書き込みを読み取るように設定されています。そしてファイルもASCIIで書かれています