ファイルからテキストを読み取るための次の関数があります。
uintmax_t ResourcePack::getText(const string& file, char** data)
{
*data = new char[static_cast<size_t>(size) + 1];
fseek(_fileDescriptor, static_cast<long>(begin), SEEK_SET);
fread(*data, static_cast<size_t>(size), 1, _fileDescriptor);
*data[size] = '\0';
}
FILE* _fileDescriptor, uintmax_t size
ここでは重要ではありuintmax_t begin
ませんが、正しい値で他のコードに取得されます。
fseek
そしてfread
ラインはうまくいきます。実は *data にファイルの中身が入っているのですが、最後の行を実行するとアクセス違反になってしまいました。
*data
を使用して書き込むことができるのに、なぜできfread
ないのusing *data[size] = '\0'
ですか?