Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
gorin
209 / 16 / 4
Регистрация: 18.08.2009
Сообщений: 571
#1

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

09.05.2012, 09:36. Просмотров 775. Ответов 4
Метки нет (Все метки)

Добрый день форумчани, у меня маленькое недопонимание. В смысле я не могу считать из файла в МАССИВ, данный массив есть объектом главного класса.
Задача:
Считать из файла в массив объекта главного класса

Сейчас я приведу классы с которыми я работаю
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();
};
В файл все записует отлично вот этот массив, пытался сделать по принципу записи (только считать), не вышло! ((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 09:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Считать из файла в массив (C++):

Нужно записать массив в файл, а потом из этого файла считать этот же массив
Помогите, пожалуйста, никогда с файлами делов не имела. Нужно записать массив...

Считать массив А с файла a.txt. после чего сформировать массив С в котором все отрицательные элементы с масси
Помогите написать программу на C++. Изучала этот язык меньше пол года, пока...

Считать с файла в массив
Подскажите, как считать посимвольно из файла в двумерный массив через fscanf?...

Считать массив А(n) из файла
Колокол. Считать массив А(n) из файла. В массиве наименьший элемент поместить...

Как считать массив из файла
#include <iostream> #include <fstream> using namespace std; int...

Считать строки из файла в массив ++
Напишите программный код для считывания строк файла в элементы массива. Заранее...

4
Catstail
Модератор
23531 / 11641 / 2034
Регистрация: 12.02.2012
Сообщений: 18,981
09.05.2012, 09:49 #2
Цитата Сообщение от gorin Посмотреть сообщение
В файл все записует отлично
Не заметил в коде ни одной операции вывода в файл...
0
gorin
209 / 16 / 4
Регистрация: 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 минуту
Помогите решить проблему!!!
0
Catstail
Модератор
23531 / 11641 / 2034
Регистрация: 12.02.2012
Сообщений: 18,981
09.05.2012, 14:54 #4
1) Что значит "кривенько"? Нужны симптомы.
2) При чтении из файла сразу заметны ошибки в коде. Когда читаешь массив char (т.е. строку), то в fscanf не нужно у имени строки ставить амперсанд (имя строки и есть ее адрес, в отличие от имени целого). Возможно, ошибки связаны с этим.
1
gorin
209 / 16 / 4
Регистрация: 18.08.2009
Сообщений: 571
09.05.2012, 15:19  [ТС] #5
Catstail, Симптома в том что в массив объекта класса читает как бы неправильные данные, к примеру в файле строка "fist" вместо нее читает на том же месте но отображает какие то бяки (смайлики)!

Добавлено через 2 минуты
Catstail, отлично работает, я разобрался
0
09.05.2012, 15:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2012, 15:19
Привет! Вот еще темы с решениями:

Как считать из файла в массив?
Подскажите как из файла который имеет такую структуру 10|25|45| считать в...

Считать из файла в массив до пробела
Как считать из файла в массив число до пробела К примеру есть 3 числа, 2456 ...

Считать из файла в массив char
Имеется массив char, в который из файла нужно считать строку. Для считывания...

Считать символы из файла в массив
Пожалуйста. нужен код для реализации считывания символов из файла (.txt) в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru