DingTingTing Ответов: 1

Считайте двоичный файл, сохраненный в виде структурного блока, и считывайте его в массив body


struct TDBDefine_Tick *data=new TDBDefine_Tick[N]; / / новый массив структуры пойдет не так
TDBDefine_Tick:это структурный блок, который сохраняется в двоичном файле

структура TDBDefine_Tick *данные=(TDBDefine_Tick *)Танос(оператор sizeof(структура TDBDefine_Tick )*Н);
При использовании другого нового пространства памяти следующее чтение будет неправильным

Что я уже пробовал:

int ReadFile()
{
	 
	FILE *fp;
	if ((fp = fopen("C:\ding.bs", " rb")) == NULL)
	{
		return -1;
	}
	else
	{
		fseek(fp,0,SEEK_END);
		long size=ftell(fp);
		long N=size/sizeof(TDBDefine_Tick);
		struct TDBDefine_Tick *data=new  TDBDefine_Tick[N];
	
	for (int i=0; i<N; i++)
	{
		fseek(fp, i * sizeof(struct TDBDefine_Tick), 0); 
		fread(&data[i], sizeof(struct TDBDefine_Tick), 1, fp);
		 
		 
	}
	}
return 0;
}

Richard MacCutchan

Что вы имеете в виду "следующее чтение пойдет не так"?
Пожалуйста, покажите определение вашего TDBDefine_Tick структурируйте и объясните, что именно происходит, когда вы пытаетесь прочитать файл.

1 Ответов

Рейтинг:
1

CPallini

Цитата:
При использовании другого нового пространства памяти следующее чтение будет неправильным
Вы должны подробно рассказать об этом.

Пожалуйста, обратите внимание, что вам это не нужно fseek итеративно указатель файла уже существует из-за предыдущего чтения. Кроме того, вы можете прочитать все элементы массива за одну операцию чтения.


DingTingTing

Даже если Fseek будет удален, FP, указывающий на заголовок файла, будет неправильным для цикла for.Главный вопрос не в этом

CPallini

"Даже если Fseek будет удален, FP, указывающий на заголовок файла, будет неправильным для цикла for"
Что заголовочный файл'?
Вы не сказали нам о "заголовке файла".
Главный вопрос не в этом
Итак, пожалуйста, расскажите нам, в чем заключается главный вопрос. А именно подробно описать, что "пойдет не так".

[no name]

"Даже если Fseek будет удален...": но вы убедились, что перед началом чтения вы начинаете файл?