powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Чтение файла в структуру
10 сообщений из 10, страница 1 из 1
Чтение файла в структуру
    #38691657
ioscat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть бинарный файл test.txt, в нём заголовок, который я пытаюсь прочитать в структуру, но что-то не идёт...
Содержание файла (от балды):
61 11 20 11 20 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0 f0

код программы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
#include <iostream>
using namespace std;

struct MyStruct
{
	unsigned char c;
	unsigned int i;
};

int main()
{
	FILE * MyFile = fopen ("c:\\cpptest\\test.txt", "r");

	MyStruct a;
	a.c=0;a.i=0;
	int StructSize=5;

	for(int i = 0;i<10;i++)
	{
		fseek(MyFile,i,SEEK_SET);
		fread(&a,StructSize,1,MyFile);
		cout << a.c << "\t";
		cout << a.i << "\n";
	}
	
	fclose(MyFile);
}



Я ожидал, что первый байт пойдёт в Unsigned Char, а ещё 4 в Insigned Int. Но в него идёт почему-то только последний пятый байт.

Выдача:

q 14
Є 15
[ 16
. 240
♫ 240
☼ 240
► 240
Ё 240
Ё 240
Ё 240
Для продолжения нажмите любую клавишу . . .
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691668
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай, как раз твой случай в примерах http://habrahabr.ru/post/142662/
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691678
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ioscat,

Код правильный, просто видимо в твой файл неправильно эта структура была записана.
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691681
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
int i выровнялось на границу слова - вот один байт и прочитался
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691684
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivioscat,

Код правильный, просто видимо в твой файл неправильно эта структура была записана.

Один момент:

Код: plaintext
1.
int StructSize=5;



должно быть
Код: plaintext
1.
int StructSize=sizeof(MyStruct);
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691687
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivioscat,

Код правильный, просто видимо в твой файл неправильно эта структура была записана.

Также:

Код: plaintext
1.
fseek(MyFile,i,SEEK_SET);




должно быть

Код: plaintext
1.
fseek(MyFile, i * sizeof(MyStruct) ,SEEK_SET);
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691688
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
должно быть
Код: plaintext
1.
int StructSize=sizeof(MyStruct);



ну будет 8, чем это поможет топикстартеру прочитать 1+4 байта?
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691696
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

я ссылку выше дал, там все расписано: и причины, и лекарства.
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691699
ioscat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ioscat,

Ошибка в тексте файла, первые 8 байт:
71 f2 5b 2e 0e 0f 10 f0 f0
...
Рейтинг: 0 / 0
Чтение файла в структуру
    #38691733
ioscat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

жиесть

спасибо
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Чтение файла в структуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]