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

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

Войти
Регистрация
Восстановить пароль
 
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
#1

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

08.04.2013, 13:34. Просмотров 728. Ответов 10
Метки нет (Все метки)

помогите как вывести данные из файла в таблицу следующим образом
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;
ПОМОГИТЕ РАЗОБРАТЬСЯ!!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 13:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод данных из структурированного файла (C++):

Как удалить строку из структурированного .txt файла - C++
Слышал что можно пересоздать файл но без строки..но как? как указать что именно N строка мне не нужна.. пытался через массив,запихнув...

ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хра-нилище данных в файле). - C++
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

Вывод данных из файла по столбцам - C++
Приветствую, уважаемые форумчане. Нужна ваша помощь. Есть код: #include<iostream> #include<stdlib.h> #include<string> ...

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

Ввод/вывод данных в/из файла - C++
Ребят, такая проблемка, когда ввожу строки , в файле они отображаются иероглифами(не все, почему то только те строки, у которых длинна 3...

Вывод данных из тектового файла - C++
Здравствуйте уважаемые эксперты c++. не могли бы мне помочь. на реализации одно из кода. мне понадобилась возможность вывода из файла txt...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 14:11 #2
Проще всего здесь через fscanf() читать.
0
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 14:29  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Проще всего здесь через fscanf() читать.
понятно... но все таки как будет правильно считать из файла и записать в таблицу???
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 14:35 #4
Через fscanf() и будет правильно.
0
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 14:56  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Через fscanf() и будет правильно.
Помогите исправить с fscanf()...
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.04.2013, 15:19 #6
х - массив структур? Какого размера?
1
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
08.04.2013, 17:22  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
х - массив структур? Какого размера?
C++
1
struct stud x[50];
0
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 отобразилось неправильно.
1
alsav22
5419 / 4815 / 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);
1
poltos-15
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 35
09.04.2013, 12:37  [ТС] #10
если файл забить так:
Россия Москва Рубль
то он ничего не выводит...

Добавлено через 35 минут
все понял спасибо!!!!
Теперь не подскажите с чего начать поиск в файле по параметрам?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.04.2013, 15:08 #11
Цитата Сообщение от poltos-15 Посмотреть сообщение
Теперь не подскажите с чего начать поиск в файле по параметрам?
Читаете также. После каждой итерации цикла, проверяете нужный параметр на совпадение, если совпадает, то вывод считанной, в этой итерации, структуры.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 15:08
Привет! Вот еще темы с ответами:

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

Вывод рандомных данных в классе из текстового файла - C++
Хочу вывести рандомные данные из текстового файла по одному. Но не знаю как. Подскажите. Код: #pragma once #include &lt;iostream&gt; ...

Вывод данных из файла, реализация через класс работает неправильно - C++
P.S плохо с русским Вот код решил использовать знание на проверку но вот толька через класс вывод инфо не хочет #include...

Ввод структуры в текстовый файл столбиком и вывод данных из файла в структуру - C++
Имеется база данных в виде структуры, которая будет постепенно дописываться приблизительно до 1000 элементов. В каждом элементе структуры...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.04.2013, 15:08
Ответ Создать тему
Опции темы

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