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

Считать из файла в массив - C++

Восстановить пароль Регистрация
 
gorin
 Аватар для gorin
207 / 14 / 2
Регистрация: 18.08.2009
Сообщений: 571
09.05.2012, 09:36     Считать из файла в массив #1
Добрый день форумчани, у меня маленькое недопонимание. В смысле я не могу считать из файла в МАССИВ, данный массив есть объектом главного класса.
Задача:
Считать из файла в массив объекта главного класса

Сейчас я приведу классы с которыми я работаю
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class pk
{
   protected:
      int numnext;
      char korpus[20];
      char m_proc[20];
      char m_monit[20];
      char *date;
   public:
      pk();
      virtual ~pk();
      virtual void inputandsave() = 0;
      virtual void print() = 0;
      virtual void save() = 0;
      //virtual void open() = 0;
};
 
class monitor:public pk
{
   protected:
      int size_monit;
      char *type_monit;
      int yrc_disp;
      int ugol_obzor;
      char max_size[20];
      float max_col_cvet;
   public:
      monitor();
      ~monitor();
      void inputandsave();
      void print();
      void save();
      //void open();
};
 
class options:public pk
{
   protected:
      float proc;
      int ozu_mb;
      char *ozu_type;
      char m_hdd[20];
      int hdd_gb;
      char m_video[20];
      int video_mb;
      char materinka[20];
   public:
      options(){
         ozu_type = "DDR3";
      }
      ~options(){
         delete ozu_type;
      }
      void inputandsave();
      void print();
      void save();
      //void open();
};
class coll
{
   public:
      pk *field[100];
      int c;
      coll(){
         c = 0;
      }
      void add();
      void outpute();
      void UdaPk(int g);
      int Menu();
      void SAVE();
      //void OPEN();
};
В файл все записует отлично вот этот массив, пытался сделать по принципу записи (только считать), не вышло! ((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
09.05.2012, 09:49     Считать из файла в массив #2
Цитата Сообщение от gorin Посмотреть сообщение
В файл все записует отлично
Не заметил в коде ни одной операции вывода в файл...
gorin
 Аватар для gorin
207 / 14 / 2
Регистрация: 18.08.2009
Сообщений: 571
09.05.2012, 14:19  [ТС]     Считать из файла в массив #3
Catstail, вот запись в файл
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
26
27
28
29
30
31
32
33
34
35
void monitor::save()
{
        f = fopen("output.txt", "a");
        fprintf(f, "%s\n", m_monit);
        fprintf(f, "%d\n", size_monit);
        fprintf(f, "%s\n", type_monit);
        fprintf(f, "%d\n", yrc_disp);
        fprintf(f, "%d\n", ugol_obzor);
        fprintf(f, "%s\n", max_size);
        fprintf(f, "%g\n", max_col_cvet);
        fclose(f);
}
void options::save()
{
        f = fopen("output.txt", "a");
        fprintf(f, "%s\n", korpus);
        fprintf(f, "%s\n", m_proc);
        fprintf(f, "%g\n", proc);
        fprintf(f, "%d\n", ozu_mb);
        fprintf(f, "%s\n", ozu_type);
        fprintf(f, "%s\n", m_hdd);
        fprintf(f, "%d\n", hdd_gb);
        fprintf(f, "%s\n", m_video);
        fprintf(f, "%d\n", video_mb);
        fprintf(f, "%s\n", materinka);
        fclose(f);
 
}
void coll::SAVE()
{
    for(int i = 0; i < c; i++)
    {
        field[i]->save();
    }
}
Добавлено через 2 минуты
Пробывал считать следущим образом
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
26
27
28
29
30
31
32
33
34
void monitor::open()
{
        fscanf(f, "%s", &m_monit); 
        fscanf(f, "%d", &size_monit);
        fscanf(f, "%s", &type_monit);
        fscanf(f, "%d", &yrc_disp);
        fscanf(f, "%d", &ugol_obzor);
        fscanf(f, "%s", &max_size);
        fscanf(f, "%f", &max_col_cvet);
}
void options::open()
{
        fscanf(f, "%s", &korpus);
        fscanf(f, "%s", &m_proc);
        fscanf(f, "%f", &proc);
        fscanf(f, "%d", &ozu_mb);
        fscanf(f, "%s", &ozu_type);
        fscanf(f, "%s", &m_hdd);
        fscanf(f, "%d", &hdd_gb);
        fscanf(f, "%s", &m_video);
        fscanf(f, "%d", &video_mb);
        fscanf(f, "%s", &materinka);
}
void coll::OPEN()
{
 
   c=2;
   f = fopen("output.txt", "r");
      field[0] = new monitor;
      field[0]->open();
      field[1] = new options;
      field[1]->open();
   fclose(f);
}
Добавлено через 2 минуты
Catstail, побывал считать 2 элемента

Добавлено через 1 час 51 минуту
Catstail, оно принципе работает, но немного кривенько

Добавлено через 2 часа 31 минуту
Помогите решить проблему!!!
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
09.05.2012, 14:54     Считать из файла в массив #4
1) Что значит "кривенько"? Нужны симптомы.
2) При чтении из файла сразу заметны ошибки в коде. Когда читаешь массив char (т.е. строку), то в fscanf не нужно у имени строки ставить амперсанд (имя строки и есть ее адрес, в отличие от имени целого). Возможно, ошибки связаны с этим.
gorin
 Аватар для gorin
207 / 14 / 2
Регистрация: 18.08.2009
Сообщений: 571
09.05.2012, 15:19  [ТС]     Считать из файла в массив #5
Catstail, Симптома в том что в массив объекта класса читает как бы неправильные данные, к примеру в файле строка "fist" вместо нее читает на том же месте но отображает какие то бяки (смайлики)!

Добавлено через 2 минуты
Catstail, отлично работает, я разобрался
Yandex
Объявления
09.05.2012, 15:19     Считать из файла в массив
Ответ Создать тему
Опции темы

Текущее время: 23:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru