i < length; ++i)
{
fread(&datalength, sizeof(int), 1, file);
dst = &data[0];
for (int j = 0; j<datalength; ++j)
{
fread(dst, sizeof(char), 1, file);
dst++;
}
*dst += datalength;
*dst = 0;
PushBack(data);
}
так будет правильнее?
Та же самая ошибка
Ты сначала должен прочитать размер, ты это вроде сделал. Затем ты с помощью new должен выделить массив такой длины: char* buf = new char[length+1]. Плюс один, чтобы нулевой символ влез. Далее, ты в этот буфер читаешь из файла. И либо сохраняешь указатель куда-то, либо из буфера строишь строку std::string. Скорее всего ты будешь делать второе, тогда не забудь после этого построения удалить память под более неиспользуемый буффер, вызвав delete [] buf;
То же самое. Но ещё хуже.
Обсуждают сегодня