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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
#1

Есть файл с данными . Как переписать эти данные в массив структур? - C++

12.10.2013, 14:41. Просмотров 1546. Ответов 53
Метки нет (Все метки)

Допустим есть файл 1.txt с данными:
123
789
456
733

Нужно из файла переписать данные в массив структур.
Например , есть такая структура:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct My
{int a;
 int b;
 int c;
 int d;
 }
int main()
{int n;
 cin>>n;
 My s=new My[n];
 
return 0;}
Получается в поле а должны быть данные из файла , которые находятся в 1-ом столбце 1,7,4,7
Помогите , пожалуйста , как это можно сделать ? Объясните , если можете , принцип записи .
Пока вообще не могу понять , как справиться с этой задачей.Как узнать , исходя из файла , сколько массивов структур будет ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 14:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Есть файл с данными . Как переписать эти данные в массив структур? (C++):

Ввести данные в файл, и записать данные с файла в массив структур - C++
Ввести все данные в файл, и записать данные с файла в структуру. Помогите ввести и вывести структуру из файла. Допускается - и желательно...

Как ввести данные в динамический массив структур? - C++
Подскажите пожалуйста, можно ли вводить данные в динамический массив структур c помощью cin >> следующим образом: #include <iostream> ...

Как записать данные из файла в массив структур? - C++
В коде я ввожу данные и их записывает в файл, помогите пожалуйста записать данные из файла в массив структур #include <conio.h> ...

Заполнить массив структур данными с файла - C++
Описать структуру с именем WORKER, содержащую следующие поля: ФИО работника; название занимаемой должности; год поступления на работу....

Как записать массив структур в файл - C++
Ребят всем привет у меня такой вопрос как мне записать #include <iostream> #include <windows.h> #include <iomanip> #include...

Подскажите как записать массив структур в файл - C++
Написал програмку, которая копирует желаемый прямоугольник(массив символов с атрибутами) в указанное место на экарн. Программа работает...

53
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 16:15  [ТС] #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Всё делайте в теле этого if:
C++
1
2
if (fin)
{}
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
struct My
{int a;
 int b;
 int c;
 int d;
};
void Show(My *arr,int N);
void Show(My *arr,int N)
{for(int i=0;i<N;i++)
{cout<<arr[i].a;
 cout<<arr[i].b;
 cout<<arr[i].c;
 cout<<arr[i].d;
 cout<<" ";
}}
int _tmain(int argc, _TCHAR* argv[])
{   ifstream fin("D:\\data.txt");
    string str;
    int N = 0;
    if (fin)
    {
        while (getline(fin, str)) ++N;  // N - количество строк (структур) в файле
        fin.clear();
        fin.seekg(0);
        My *arr = new My[N];
        for (int i = 0; i < N; ++i)
        {
            fin >> arr[i].a;
            fin >> arr[i].b;
            fin >> arr[i].c;
            fin >> arr[i].d;
        }
        Show(arr,N);
        fin.close();
}
getch();
return 0;
}
я запускаю всё это , и абсолютно ничего на экран не выводится
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:09 #17
Цитата Сообщение от NNN7 Посмотреть сообщение
я запускаю всё это , и абсолютно ничего на экран не выводится
А так?
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
//#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
struct My
{
    int a;
    int b;
    int c;
    int d;
};
 
void Show(My *arr,int N);
void Show(My *arr,int N)
{
    for(int i=0;i<N;i++)
    {
        cout<<arr[i].a;
        cout<<arr[i].b;
        cout<<arr[i].c;
        cout<<arr[i].d;
        cout<<" ";
    }
}
 
int main()
{   
    ifstream fin("D:\\data.txt");
    string str;
    int N = 0;
    if (fin)
    {
        while (getline(fin, str)) ++N;  // N - количество строк (структур) в файле
        fin.clear();
        fin.seekg(0);
        My *arr = new My[N];
        for (int i = 0; i < N; ++i)
        {
            fin >> arr[i].a;
            fin >> arr[i].b;
            fin >> arr[i].c;
            fin >> arr[i].d;
        }
        
        Show(arr,N);
        fin.close();
    }
    else cout << "Error!" << endl;
    
    getch();
    return 0;
}
1
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 17:18  [ТС] #18
Цитата Сообщение от alsav22 Посмотреть сообщение
А так?
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
//#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
using namespace std;
struct My
{
    int a;
    int b;
    int c;
    int d;
};
 
void Show(My *arr,int N);
void Show(My *arr,int N)
{
    for(int i=0;i<N;i++)
    {
        cout<<arr[i].a;
        cout<<arr[i].b;
        cout<<arr[i].c;
        cout<<arr[i].d;
        cout<<" ";
    }
}
 
int main()
{   
    ifstream fin("D:\\data.txt");
    string str;
    int N = 0;
    if (fin)
    {
        while (getline(fin, str)) ++N;  // N - количество строк (структур) в файле
        fin.clear();
        fin.seekg(0);
        My *arr = new My[N];
        for (int i = 0; i < N; ++i)
        {
            fin >> arr[i].a;
            fin >> arr[i].b;
            fin >> arr[i].c;
            fin >> arr[i].d;
        }
        
        Show(arr,N);
        fin.close();
    }
    else cout << "Error!" << endl;
    
    getch();
    return 0;
}
так выводится Error!
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:20 #19
Цитата Сообщение от NNN7 Посмотреть сообщение
так выводится Error!
И как думаете, почему?
0
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 17:21  [ТС] #20
Цитата Сообщение от alsav22 Посмотреть сообщение
И как думаете, почему?
что-то с открытием файла не так ?
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:34 #21
Файл не находит.
0
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 17:43  [ТС] #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Файл не находит.
И что же делать в таком случае? Путь вроде правильно описан.В чём же тогда может быть проблема?
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:45 #23
Цитата Сообщение от NNN7 Посмотреть сообщение
Путь вроде правильно описан.В чём же тогда может быть проблема?
Может в том, что "вроде бы"?
0
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 17:47  [ТС] #24
Цитата Сообщение от alsav22 Посмотреть сообщение
Может в том, что "вроде бы"?
Да не может быть , чтобы не правильно . Вот , на диске D , без всякой папки у меня хранится файл data.txt с данными

А Вы не пробовали у себя запустить ?
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 17:50 #25
Цитата Сообщение от NNN7 Посмотреть сообщение
А Вы не пробовали у себя запустить ?
Пробовал.
0
Миниатюры
Есть файл с данными . Как переписать эти данные в массив структур?  
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 17:56  [ТС] #26
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробовал.
И как результат ?

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробовал.
Так а что я делаю неправильно?

Добавлено через 3 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Пробовал.
у Вас такие значения были в файле?
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 18:21 #27
Цитата Сообщение от NNN7 Посмотреть сообщение
у Вас такие значения были в файле?
...
1 2 3 4
5 6 7 8
9 1 2 3
5 6 7 8
0
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 18:23  [ТС] #28
Цитата Сообщение от alsav22 Посмотреть сообщение
...
так в чём же ошибка открытия файла? помогите мне , пожалуйста
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.10.2013, 18:29 #29
Попробуйте в папку проекта файл поместить, и в коде измените:
C++
1
ifstream fin("data.txt");
Добавлено через 2 минуты
Если не сработает, то название измените на "1.txt", может у вас русская а в названии.
0
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
12.10.2013, 18:31  [ТС] #30
Цитата Сообщение от alsav22 Посмотреть сообщение
Попробуйте в папку проекта файл поместить, и в коде измените:
C++
1
ifstream fin("data.txt");
Добавлено через 2 минуты
Если не сработает, название измените на "1.txt", может у вас русская а в названии.
поместил , изменил- всё тоже самое((
и на 1 уже поменял - не хочет (
0
12.10.2013, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2013, 18:31
Привет! Вот еще темы с ответами:

Как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю? - C++
Ребята подскажите как объявить динамический массив структур, и как выглядит обращение к полям структур по указателю.

Прочитать из текстового файла данные в массив структур - C++
Структура типа: Фамилия,логин,пароль,роль(администратор, модератор, простой пользователь) Не могу понять как прочитать из текстового...

Переписать с первого файла данные во второй файл, но по критериям - C++
Здравствуйте ещё раз. Помогите, пожалуйста, с самым сложным. Я написал в файл текст с цифрами. Например: My name is Peter. I`am 15 years...

Выделить отдельные данные в файле и переписать в другой файл - C++
Здравствуйте. есть такая задача. Нужно обработать файл, в котором вряд написаны слитно данные. Нужно выделить отдельные данные и переписать...


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

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

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