0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 11
1

Чтение из файла полей структуры

18.09.2014, 21:05. Показов 1203. Ответов 6
Метки нет (Все метки)

есть файл в котором есть таблица с данными, вывод в файл идет с помощью вот такой функции
:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void FileOutput(char* d)
{   dish* p=head;
    ofstream fout;
    fout.open(d);
    int i=1;
    while(p){
        fout << "------------------------------------------------------" << endl;
        fout <<setw(5)<<"Номер"<< setw(10) << "Тип" << '|' << setw(10) << "Объем" << '|' << setw(10) << "Площадь" << '|' << setw(10) << "Покрытие" << '|' << setw(10) << "Материал" << '|' << setw(10) << "Цена" << endl;
        while (p){
            if (p->type[0] == 'с')
                fout <<"\t"<<i<< "\t" << p->type << '|' << "\t" << '-' << '|' << "\t" << p->s << '|' << "\t" << p->pokr << '|' << "\t" << p->mat << '|' << "\t" << p->price << endl;
            else
                fout <<"\t"<<i<< "\t" << p->type << '|' << "\t" << p->vol << '|' << "\t" << '-' << '|' << "\t" << '-' << '|' << "\t" << p->mat << '|' << "\t" << p->price << endl;
            i++;
            p=p->next;
    }
        fout.close();
    }}
суть в том чтобы забить из этой таблицы поля структуры вида
C++
1
2
3
4
5
struct dish{
    char type[10], mat[10], pokr[3];
    double vol, s, price;
    dish* next;
    };
как это можно сделать

P.S это задача по линейному односвязному списку
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2014, 21:05
Ответы с готовыми решениями:

Инициализация полей структуры из файла
Помогите, пожалуйста, разобраться с файлами. Имеется такая структура: enum Pos {director =...

Чтение структуры из файла
Всем привет! Уже неделю бьюсь, задача связана с решением системы линейных ур-ий. Есть текстовый...

Чтение структуры из файла
Из файла выводит все прекрасно, так как надо, но в конце, не понимаю почему, выводит последнюю...

Чтение структуры из файла
Добрый день. Пытаюсь считать структуру из файла в структуру(идентичную структуре файла)...

6
Модератор
Эксперт С++
12088 / 9763 / 5906
Регистрация: 18.12.2011
Сообщений: 26,213
18.09.2014, 21:37 2
Ввод организуете аналогично выводу.
Формирование списка см. например
Процедура добавления элемента в список по номеру
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 11
18.09.2014, 23:21  [ТС] 3
вопрос в том каким способом удобнее будет считывать информацию из файла, пока у меня только идея построчно считывать и потом обрабатывать строку, распихивая ее части по полям структуры, возможно есть какие-то более простые или удобные варианты
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16840 / 6718 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.09.2014, 23:45 4
Ну вообще есть fscanf, можно использовать ее, например
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 11
22.09.2014, 01:27  [ТС] 5
в общем, попробовал сделать все это бинарниками
вывод в файл такой:
C++
1
2
3
4
5
6
7
8
9
10
void FileOutput(char* d)
 
{   dish* p=head;
    ofstream out(d,ios::binary|ios::out);
    while(p){
    out.write((char*)p,sizeof *p);
    p=p->next;
}
    out.close();
    }
а чтение из файла такое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void FileInput(char* d){
    dish* p,*k;
    p= new dish;
    ifstream in(d,ios::binary|ios::in);
    in.read((char*)p,sizeof *p);
    head=p;
    k=p;
    p->next=NULL;
    while(!in.eof()){
    cout<<"read"<<endl;
    system("pause");
    p = new dish;
    in.read((char*)p,sizeof *p);
    cout<<p<<"____"<<p->next;
    p->next=NULL;
    k->next=p;
    k=p;
    
     
     }
         in.close();
    }
проблема в том, что при чтении из файла он лишний раз прогоняет этот цикл, погуглив, я понял что проблема в условии цикла, типа он последний символ считал, но за пределы не вышел, и конец файла не достигнут, как можно выполнить нормальную проверку на достижение конца файла
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2014, 02:06 6
Цитата Сообщение от Silvio Посмотреть сообщение
как можно выполнить нормальную проверку на достижение конца файла
C++
1
2
3
in.read((char*)p,sizeof *p);
if (in.eof())
    break;
0
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 11
15.10.2014, 20:37  [ТС] 7
проблема решена
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2014, 20:37
Помогаю со студенческими работами здесь

Чтение из файла структуры
Есть небольшая и непонятная проблема вот весь код программы #include &lt;iostream&gt; #include...

Чтение структуры из файла
Нужно было реализовать программу, с сортировкой структуры по разным параметрам быстрым и медленным...

Чтение структуры из файла C++
Помогите пожалуйста написать данную программу. На магнитном диске подготовлен файл данных такой...

Чтение структуры из файла
мне надо считать структуру из файла и вывести данные на экран. считывать-то считывает.. но вот...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru