Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись структуры в фаил 
:(
    Опции темы
knut
Дата 28.11.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Добрый день.Вот не как не могу записать струкруру в фаил.
Есть базовый калсс и наследник.Все просто просто надо записать sUnit структуру в фаил.но не в какую.
Код

class cUnit
{
public:
    cUnit(){};
    ~cUnit(){};
    cUnit(const cUnit&){};
public:
    virtual void write_to_file(const char *,int ) = 0 ;
    ///....

Код


class cUnitA :public cUnit
{
    typedef struct sUnit
    {
    public:
        int m_a,m_b,m_d;
        sUnit()
        {
           m_a = 10;
           m_b = 15;
           m_d = 20;
        }
        sUnit(const sUnit&){};
        ~sUnit(){};
    }my_struct;
public:
    cUnitA(){};
    cUnitA(const cUnit&){};
    ~cUnitA(){};
public:
        my_struct point;
public:
    ///.......///
    void write_to_file(const char *pFileName,int n_size);
    ///...////
};
inline void  cUnitA::write_to_file(const char *pFileName, int n_size)
{
    FILE *file;
    if((file = fopen("test.txt","wb"))!=NULL)
    {
    
        ::fwrite(&point,sizeof(my_struct),10,file);
        ::fclose(file);
    }
}


и в main е пишу так
Код

   cUnitA *ptA;
   ptA = new cUnitA;
   ptA->write_to_file("test.txt",10);
 
помогите разобратся в проблеме 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
_hunter
Дата 28.11.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



так проблема в чем? в файл не пишет, пришет, но не то, файл даже не появляется?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Voldemar2004
Дата 28.11.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Код
ptA->write_to_file("test.txt",10);
Может быть у него здесь ошибка? И файл лучше открывать не в бинарном режиме, а в текстовом и в режиме Append'a?
Код
if((file = fopen("c:\\test.txt","a"))!=NULL)



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
knut
Дата 28.11.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



_hunter,  да в фаил не чего пишет


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
_hunter
Дата 28.11.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



посмотри отладчиком доходит ли выполнение до места записи.
посмотри чему == sizeof(my_struct).
предпоследний параметр, кстати, д.б. == 1...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
knut
Дата 28.11.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Цитата

посмотри отладчиком доходит ли выполнение до места записи.

да даxодет.
Цитата

посмотри чему == sizeof(my_struct).

в начале как и должно было быть оно 12 но при вxоде в функц.write_to_file() почему то оно теряет значения и становится нульом.


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
JackYF
Дата 28.11.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(knut @  28.11.2006,  14:33 Найти цитируемый пост)
в начале как и должно было быть оно 12 но при вxоде в функц.write_to_file() почему то оно теряет значения и становится нульом. 


Вообще sizeof(...) работает на уровне компиляции... Как оно может поменять значение?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
knut
Дата 28.11.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



и почему fwrite возврошает 1? 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
JackYF
Дата 28.11.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Код

RETURN VALUE
       fread and fwrite return the number of items successfully read or written (i.e., not the number of characters).


Значит, смогло записать только 1 элемент... Логично.
Где у тебя возьмутся остальные 9?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
knut
Дата 28.11.2006, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



JackYF, 
не ну я не фига не понимаю wfrite возвошает каунт(и правелно делает ) и все работает правилно но  почему  не фига в фаил не пишется?


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
JackYF
Дата 28.11.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(knut @  28.11.2006,  17:04 Найти цитируемый пост)
не ну я не фига не понимаю wfrite возвошает каунт(и правелно делает ) и все работает правилно но  почему  не фига в фаил не пишется? 


А попробуй написать там не 10, а 1. Может, что-то получится?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
knut
Дата 28.11.2006, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Цитата

А попробуй написать там не 10, а 1. Может, что-то получится?

я в коде исправилsmile но результата не дало.
ну какая разница что  я там пишу 1 или 10.это число говорит скилько цыфр функцие надо записать.xоть что то в фаил должно было записаться



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
JackYF
Дата 28.11.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(knut @  28.11.2006,  17:24 Найти цитируемый пост)
говорит скилько цыфр функцие надо записать.

Нифига.

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);


The function fwrite writes nmemb elements of data, each size bytes long, to the stream pointed to by stream, obtaining them  from  the
       location given by ptr.


Цитата(JackYF @  28.11.2006,  16:50 Найти цитируемый пост)
RETURN VALUE
       fread and fwrite return the number of items successfully read or written (i.e., not the number of characters).


Постю еще раз.
Прочитай то, что в скобках - "not the number of characters", то есть не число символов или цифр, а число элементов.

Добавлено @ 17:40 
Файл создается? Но в него ничего не пишется? Абсолютно? А какой размер выдает TC/FAR/проводник?

Это сообщение отредактировал(а) JackYF - 28.11.2006, 17:41


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
knut
Дата 28.11.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Цитата

Файл создается? Но в него ничего не пишется? 

да


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Любитель
Дата 28.11.2006, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Хватит в плюсах юзать FILE!!!
Есть типобезопасная IOStreams.
Почти уверен, что у тебя всё пишется, но ты смотриш ьтекстовым редактором  - и ничего не видишь.


--------------------
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.