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

Вывод данных из структурированного файла - C++

Восстановить пароль Регистрация
 
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 13:34     Вывод данных из структурированного файла #1
помогите как вывести данные из файла в таблицу следующим образом
strana | stolica | valuta
россия москва рубль
и тд...
чтоб считались все строки в файле и заполнили таблицу...
в файле будет записаны данные в таком виде
россия москва рубль
.
..
...

. Я тут вот начел писать вот кусок программы выводится некоректно....(непрально считывает походу с файла)...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
m1:
system("cls");
printf("\n\n\t***Vivod bazi na monitor***\n\n");
printf("\t|-------------------------------------------|\n");
printf("\t|  strana      |   stolica    |    valuta   |\n");
printf("\t|-------------------------------------------|\n");
 
f1= fopen("baza.DAT","r");i=0;
while(fread(&x[i],sizeof(x[i]),1,f1)==1){
printf("\t|%21s|%10s|%10s|\n",x[i].strana,x[i].stolica,x[i].valuta); i++;
printf("\t|-------------------------------------------|\n");}
fclose(f1);n=i;
 
system("pause");
 
goto m0;
ПОМОГИТЕ РАЗОБРАТЬСЯ!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 14:11     Вывод данных из структурированного файла #2
Проще всего здесь через fscanf() читать.
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 14:29  [ТС]     Вывод данных из структурированного файла #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Проще всего здесь через fscanf() читать.
понятно... но все таки как будет правильно считать из файла и записать в таблицу???
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 14:35     Вывод данных из структурированного файла #4
Через fscanf() и будет правильно.
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 14:56  [ТС]     Вывод данных из структурированного файла #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Через fscanf() и будет правильно.
Помогите исправить с fscanf()...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 15:19     Вывод данных из структурированного файла #6
х - массив структур? Какого размера?
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 17:22  [ТС]     Вывод данных из структурированного файла #7
Цитата Сообщение от alsav22 Посмотреть сообщение
х - массив структур? Какого размера?
C++
1
struct stud x[50];
prospector
 Аватар для prospector
7 / 7 / 0
Регистрация: 23.03.2013
Сообщений: 17
08.04.2013, 17:43     Вывод данных из структурированного файла #8
Цитата Сообщение от poltos-15 Посмотреть сообщение
помогите как вывести данные из файла в таблицу
Вот тебе пример (из книжки Лаптева "С++ ООП").
Допустим есть текстовый файл tovar.dat с перечнем товаров, в котором одна запись занимает 2 строки: на первой строке - название товара, на второй — количество и цена.

// tovar.dat
Авторучки перьевые
1031 257.50
Авторучки шариковые
2143 6.50
Лампы настольные люминесцентные белые
300 350
Папки для бумаг
10677 12.67

Требуется записать новый файл (summa.dat), в одной строке которого будет 5 полей:
1. Номер по порядку, ширина поля — 3 символа.
2. Название товара — 40 символов»
3. Цена — 7 символов, два знака после запятой.
4. Количество — 6 символов, целое число.
5. Стоимость = количество цена — 12 символов, 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
#include <fstream>
#include <iomanip>
#include <string>
 
using namespace std;
 
 
int main()
{ struct Tovar
  { 
    string name; // наименование товара
    unsigned int HowMany; // количество
    double Price; // цена
};
  Tovar tmp;
  ifstream inf("tovar.dat"); // исходный файл
  ofstream to ("summa.dat"); // файл-ведомость
  int i = 1; double Summa = 0;
 
  // чтение первой записи
  getline(inf, tmp.name);
  inf >> tmp.HowMany; inf >> tmp.Price; inf.ignore();
  while(!inf.eof()) // пока не конец файла
    { to << right << setw(3) << i++ << '|';
      to << left << setw(40) << tmp.name.substr(0,40) << '|';
      to.precision(2);
      to << right << fixed
     << setw(6) << tmp.HowMany << '|'
     << setw(7) << tmp.Price << '|'
     << setw(12) << tmp.Price*tmp.HowMany << '|'
     << endl;
      Summa += tmp.Price*tmp.HowMany;     
      getline(inf, tmp.name);
      inf >> tmp.HowMany; inf >> tmp.Price; inf.ignore();
    }
  to << setw(72) << Summa << endl;
}
Результат:

// summa.dat
1|Авторучки перьевые | 1031| 257.50| 265482.50|
2|Авторучки шариковые | 2143| 6.50| 13929.50|
3|Лампы настольные люми| 300| 350.00| 105000.00|
4|Папки для бумаг | 10677| 12.67| 135277.59|
519689.59

Форматирование summa.dat отобразилось неправильно.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 21:53     Вывод данных из структурированного файла #9
Чтение так можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    f1 = fopen("baza.DAT","r");
    if (!f1) 
    {
        printf("Error!");
        getchar();
        return 1;
    }
 
    for (int i = 0; i < 50; ++i)
    {
        fscanf(f1, "%s", x[i].strana);
        if (feof(f1)) break;
        fscanf(f1, "%s%s", x[i].stolica, x[i].valuta);
    }
 
    fclose(f1);
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
09.04.2013, 12:37  [ТС]     Вывод данных из структурированного файла #10
если файл забить так:
Россия Москва Рубль
то он ничего не выводит...

Добавлено через 35 минут
все понял спасибо!!!!
Теперь не подскажите с чего начать поиск в файле по параметрам?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 15:08     Вывод данных из структурированного файла
Еще ссылки по теме:

Ввод/вывод данных в/из файла C++
Вывод данных из файла по столбцам C++
C++ Вывод данных из файла, реализация через класс работает неправильно

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.04.2013, 15:08     Вывод данных из структурированного файла #11
Цитата Сообщение от poltos-15 Посмотреть сообщение
Теперь не подскажите с чего начать поиск в файле по параметрам?
Читаете также. После каждой итерации цикла, проверяете нужный параметр на совпадение, если совпадает, то вывод считанной, в этой итерации, структуры.
Yandex
Объявления
09.04.2013, 15:08     Вывод данных из структурированного файла
Ответ Создать тему
Опции темы

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