Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
читаем из файла в структуру
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: читаем из файла в структуру (Прочитано 11154 раз)
0 Пользователей и 1 Гость смотрят эту тему.
genchik
Гость
читаем из файла в структуру
«
:
12-04-2005 04:37 »
Почему когда читаем из файла в структуру, которая передается в виде указателя на нее, то она возвращает чушь вместо нормальных значений, а если в теле этой же функции создать такой же объект (не указатель) и затем указателю присвоить его адрес, то все нормально?
:?
не работает так как надо:
void getStruct(char *name, item *it) {
FILE *f;
f = fopen(name, "rb+");
fread(it, sizeof(item), 1);
}
различные проверки я опустил для простоты примера
работает:
void getStruct(char *name, item *it) {
FILE *f;
item st;
f = fopen(name, "rb+");
fread(&st, sizeof(item), 1);
*it = st;
}
Записан
Alf
Гость
Re: читаем из файла в структуру
«
Ответ #1 :
12-04-2005 06:31 »
На какой платформе компилируется программа? Например, для VC++ функция
fread
имеет 4 аргумента.
Записан
Pu
Большой босс
Offline
78
Re: читаем из файла в структуру
«
Ответ #2 :
12-04-2005 08:08 »
Код:
#pragma pack(1)
struct s
{
.....................
};
#pragma pack()
хотя не уверен что в этом дело
«
Последнее редактирование: 12-04-2005 08:13 от Pu
»
Записан
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Migmile
Помогающий
Offline
Re: читаем из файла в структуру
«
Ответ #3 :
12-04-2005 11:55 »
Цитата: Alf от 12-04-2005 06:31
На какой платформе компилируется программа? Например, для VC++ функция
fread
имеет 4 аргумента.
- если бы еще указать откуда читать (нет ссылки на открытый файл)
Если же она есть, то возможна путаница с указателем *it; Случайно в программе нет глобальной переменной с темже именем?
Записан
genchik
Гость
Re: читаем из файла в структуру
«
Ответ #4 :
12-04-2005 22:13 »
Упс
. Ссылку на файл из которого читаем пропустил. но читаем именно из f, это все есть. и глобальной переменной с именем таким нет. компилирую на билдере шестом.
Записан
michaelprog
Гость
Re: читаем из файла в структуру
«
Ответ #5 :
13-04-2005 04:53 »
у моего друга на Builder6 такая же проблемма, как поборол еще не знаю.
попробуй ссылку на указатель:
void getStruct(char *name, item*& it)
может поможет, хотя особого смысла в этом не вижу , с точки зрения языка должно работать и так. Проверь как создается структура.
Записан
Pu
Большой босс
Offline
78
Re: читаем из файла в структуру
«
Ответ #6 :
13-04-2005 06:13 »
вообще-то по жизни использую и уже давно STL-ные потоки, как бы и жизн облегчается
Код:
#pragma pack(1) // эти прагмы указывают под виндами компилятору что данные в структуре item надо подравнять по одному байту, если их нет по умолчанию это будет двойное слово
struct item
{
char c;
........
};
#pragma pack()
#include <fstream>
void getStruct(char *name, item *it)
{
std::fstream fs( name, std::ios::binary | std::ios::in);
if( !fs.is_open())
return;
fs.read((char *)it, sizeof(item));
// ну и все, можно конечно закрыть и проверить состояние потока обработать исключения но это уже совсем другая песня :)
}
«
Последнее редактирование: 13-04-2005 06:15 от Pu
»
Записан
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
genchik
Гость
Re: читаем из файла в структуру
«
Ответ #7 :
14-04-2005 00:21 »
НУ что же, спасибо за ответы и рекомендации. Буду пробовать!
Записан
Migmile
Помогающий
Offline
Re: читаем из файла в структуру
«
Ответ #8 :
14-04-2005 07:00 »
Ищи ошибку в указателях в другом месте! Этот код правильный. Где-то портишь память.
Записан
genchik
Гость
Re: читаем из файла в структуру
«
Ответ #9 :
14-04-2005 22:32 »
Оно может конечно и в другом месте где нить портится память, но дебагер показывает неверные значения уже в этой процедуре сразу после чтения из файла
. я тоже поначалу думал что где то подпортил пямять
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
(Модератор:
Вад
) > Тема:
читаем из файла в структуру
Загружается...