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

Считывание данных из файла с 4мя столбцами - C++

Восстановить пароль Регистрация
 
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
30.03.2013, 19:28     Считывание данных из файла с 4мя столбцами #1
Необходимо считать данные в 4 переменные из 4х разных столбцов, сам файл весит 10мб. То есть файл огромный, но в нём данные располагаются строго в 4х столбцах, разделенные между собой пробелом.
Когда был 1 столбец в огромном файле, код ниже работал, так же код ниже проверял на файле, в котором было всего 4 значения, 2 столбца по 2 значения, соответственно тоже все работало. Но когда теперь необходимый файл стал содержать 4 столбца и весить 10 мб почему то считывается только первый столбец а с остальных 3х ничего не считывается, в чем дело я не понимаю, помогите пожалуйста!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 double *matog, *disper, temp1, temp2;
   int i=0;
   int  Razmernost=100000;
   double h1=0.001;
   matog=(double*)malloc(Razmernost*sizeof(double));
   disper=(double*)malloc(Razmernost*sizeof(double));
 
   static const char filename[] = "func_ci.dat";
   FILE *file = fopen ( filename, "r" );
   if (file != NULL)
   {
      char line [128]; /* or other suitable maximum line size */
      i = 0;
      while (fgets(line, sizeof line, file) != NULL ) /* read a line */
   {
 
    sscanf(line, "%le %le %le %le", &matog[i], &temp1, &temp2, &disper[i]);
 
        //fputs(line, stdout); /* write the line */
         i++;
      }
     fclose ( file );
   }
Добавлено через 27 минут
Ребята,ребята помогите пожалуйста, очень надо...

Добавлено через 2 часа 10 минут
Кто нибудь кто понимает, отзовитесь!!!

Добавлено через 3 часа 31 минуту
Кто нибудь помогите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2013, 19:28     Считывание данных из файла с 4мя столбцами
Посмотрите здесь:

считывание данных из файла C++
Считывание данных из файла C++
считывание данных из файла C++
Считывание данных из файла C++
считывание данных из файла в C++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mindz
 Аватар для Mindz
7 / 7 / 1
Регистрация: 31.01.2010
Сообщений: 51
31.03.2013, 01:03     Считывание данных из файла с 4мя столбцами #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
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
#include <iostream>
#include <fstream>
#include <list>
#include <string>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix.hpp>
 
using namespace std;
using namespace boost::spirit;
 
template<typename Iterator, typename Attr>
bool parseNumbers( Iterator begin,
                   Iterator end,
                   Attr &_A1, Attr &_A2, Attr &_A3, Attr &_A4 )
{
  using boost::phoenix::ref;
  using boost::phoenix::push_back;
 
  bool _result = qi::parse( begin,
                            end,
                            (
                              ( qi::double_[push_back( ref( _A1 ), qi::_1 )] >> qi::space
                                                                             >> qi::double_[push_back( ref( _A2 ), qi::_1 )]
                                                                             >> qi::space
                                                                             >> qi::double_[push_back( ref( _A3 ), qi::_1 )]
                                                                             >> qi::space
                                                                             >> qi::double_[push_back( ref( _A4 ), qi::_1 )]
                                ) % qi::space
                             ) );
 
  return _result;
}
 
int main()
{
  char sPath[200], _buffer[500];
  string _str;
  fstream _file;
  list<double> _firstColumn,
               _secondColumn,
               _thirdColumn,
               _fourthColumn;
 
  cout << "Input the path to file: ";
 
  if ( cin >> sPath )
     _file.open( sPath, ios_base::in );
 
  if ( !_file.is_open() ) {
     cerr << "\nWrong Path to directory file!" << endl;
  } else {
          while ( _file.getline( _buffer, sizeof( _buffer ) ) ) _str += _buffer, _str += ' ';
          _file.close();
          if ( parseNumbers( _str.begin(),
                             _str.end(),
                             _firstColumn,
                             _secondColumn,
                             _thirdColumn,
                             _fourthColumn ) )
              cout << _str << endl;
    }
 
  system("PAUSE");
 
  return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2013, 01:31     Считывание данных из файла с 4мя столбцами #3
Что собственно не так? Код рабочий. Всё считывается. Откуда видите, что не считывается?
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
31.03.2013, 08:10  [ТС]     Считывание данных из файла с 4мя столбцами #4
в Борланде программу запускаю и во всех переменных кроме первой нули ложатся, а в файле в тех столбцах лежат не нули, я не знаю в чем проблема но вот так почему то происходит...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2013, 09:20     Считывание данных из файла с 4мя столбцами #5
В файле:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

В коде добавлен вывод читаемого в temp1, temp2 и считанного в массивы:
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
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
 
int main()
{ 
     
   double *matog, *disper, temp1, temp2;
   int i=0;
   int  Razmernost=100000;
   double h1=0.001;
   matog=(double*)malloc(Razmernost*sizeof(double));
   disper=(double*)malloc(Razmernost*sizeof(double));
 
   static const char filename[] = "func_ci.dat";
   FILE *file = fopen ( filename, "r" );
   if (file != NULL)
   {
      char line [128]; /* or other suitable maximum line size */
      i = 0;
      while (fgets(line, sizeof line, file) != NULL ) /* read a line */
      {
 
        sscanf(line, "%le %le %le %le", &matog[i], &temp1, &temp2, &disper[i]);
        cout << "temp1 = " << temp1  << ' ' << "temp2 = " << temp2 << endl;
        //fputs(line, stdout); /* write the line */
         i++;
     }
     fclose ( file );
 
     for (int j = 0; j < i; ++j)
        cout << "matog[" << j << "] = " << matog[j] 
      << ' ' << "disper[" << j << "] = " << disper[j] << endl;
 
   }
  
    system("pause");
    return 0;
}
Миниатюры
Считывание данных из файла с 4мя столбцами  
Yandex
Объявления
31.03.2013, 09:20     Считывание данных из файла с 4мя столбцами
Ответ Создать тему
Опции темы

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