Форум программистов, компьютерный форум CyberForum.ru

Странности с чтением объекта структуры из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Добавить в конец непустой очереди все ее элементы, располагая их в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread574964.html
Добавить в конец непустой очереди все ее элементы, располагая их в обратном порядке.
C++ Как правильно составить блок схему по такому типажу кода. double a, f; cout<<"vvedite a:"<<""; cin>>a; if (a>=4) f=6; if (-4<a<4) f=3/8*a*a; if (a<-4) f=3*a+18; cout<<"("<<a<<","<<f<<")"; if (a>f) cout<<"kratch rasst do x:"<<f; else cout<<"kratch rasst do y:"<<a; getch (); http://www.cyberforum.ru/cpp-beginners/thread574950.html
Как преобразовать массив в строку и обратно C++
Знаю как преобразовывать переменные в строку Но может есть в с++ какая то функция которая быстро преобразует весь массив в строку с заданным разделителем ? или возможен только вариант с sprintf(szbuff, "%g", int_var); string_var=szbuff; В цикле ?
C++ Динамический массив отсортировать по возростанию методом быстрой сортировки
Отсортировать дин. масив по возростанию методом быстрой сортировки.
C++ Написать функцию чтения почтового сообщения с отдельным выводом заголовка, отправителя, получателя и самого письма. Номер письма в файле вводится пара http://www.cyberforum.ru/cpp-beginners/thread574922.html
Написать функцию чтения почтового сообщения с отдельным выводом заголовка, отправителя, получателя и самого письма. Номер письма в файле вводится параметром функции.
C++ дана целочисленная таблица a[1..m]. дана целочисленная таблица a. среди элементов таблицы есть хотя бы один отрицательный. найти сумму s элементов расположенных после отрицательного элемента, затем найти сумму простых множетелей числа s Помогите плииииз(((( подробнее

Показать сообщение отдельно
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
15.05.2012, 13:24  [ТС]     Странности с чтением объекта структуры из файла
zss, да нет, я ведь ключ пытаюсь распечатать пока файл открыт. Что-то оно вообще фигня полная происходит с этой fread. Гоняю в дебагере этот код и что я вижу
C++
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
void Test()
{
    Item* it=NULL,*it2;
    it2=new Item;//в этот объект я буду читать из файла. Он должен изменится!
    /*
    it= new Item(100500,"t");//этот объект я хочу записать в файл
    it->shift=200;
    it->length=2;
 
    FILE* out=fopen("out.txt","r+");
    if(!out)
     cerr<<"Can't open file\n";
 
    fwrite(&it,sizeof(Item),1,out);
    fclose(out);
    */
 
    FILE* in=fopen("out.txt","r");
    if(!in)
     cerr<<"Can't open file\n";
    fread(&it2,sizeof(Item),1,in); //после этой строчки меняется адрес у it и it2. Обратите внимание, до этого it=NULL
    //и нигде не используется на протяжении всей функции. Как эта сраная сишная fread до неё добралась и изменила указатель ???
    cout<<it2->key;//сегфолт, всё потому что it2 указывает не пойми на что. 
   //Fread после того как в неё читала данные изменила адрес на какой-то кусок памяти к которому видать доступа то и нет.
}
Добавлено через 7 минут
Как эти fread и fwrite вообще работают то? Может я всё же не правильно им передаю что писать/читать? Им адрес надо давать объекта стркутуры, или указатель на него или адрес указателя ? Они же всё принимают и угадывай потом что оно записало, а что считало.

Добавлено через 5 минут
Наверное надо пробовать с malloc'ами это дело решать, ато фигня просиходит.
 
Текущее время: 19:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru