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

Счёт последовательностей бинарных файлов - C++

Восстановить пароль Регистрация
 
Ma3au
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 14
27.03.2014, 12:17     Счёт последовательностей бинарных файлов #1
Написал программу, которая конвертирует текстовый файл в бинарный, считывает из него данные для структуры. И вроде всё работает. Но теперь нужно сделать функцию которая будет считать последовательности байт "0x0A, 0x0O) в этом файле. Вообще не понимаю работу с бинарными файлами и как это организовать. Объясните пожалуйста.
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <iomanip>
#include <fstream>
 
 
 
using namespace std;
 
struct statistic {
 
    char name[15];
    int win;
    int lose;
    int draw;
    int goal;
    int miss;
    int score;
};
 
 
// Считает число строк
int Amount_File( )                              
{
    ifstream amount_team ("stata.txt");
    int amount=1;
    while ( !amount_team.eof() ){
        if( amount_team.get() == '\n' ){
            amount++;
        }
    }
    amount_team.close();
    return amount;
}
//Изменяет текстовый файл в бинарный
void Conv(int amount){
    statistic *ubiq;
    FILE *in ,*bin;
    ubiq = new statistic[amount];
    in = fopen("stata.txt","r");
    bin = fopen("statabin.data","w+b");
    for(int i=0; i<amount; i++)
    {
        fscanf(in, "%s%d%d%d%d%d", ubiq[i].name, &ubiq[i].win, &ubiq[i].lose, &ubiq[i].draw, &ubiq[i].goal, &ubiq[i].miss);
        ubiq[i].score = ubiq[i].win * 2  + ubiq[i].draw;
        fwrite(&ubiq[i], sizeof(ubiq[i]), 1, bin);
    }
    delete [] ubiq;
    fclose(in);
    fclose(bin);
}
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
 
    string nametxt;
 
    ifstream amount_team ("stata.txt");
 
    int amount;
    amount = Amount_File();
 
    statistic *team;
    team = new statistic[amount];
    
    Conv(amount);
    
    FILE *f1 = fopen("statabin.txt", "r+b");
    for(int i=0; i<amount; i++)
        fread(team[i].name, sizeof(team[i]),1, f1);
    fclose(f1);
    ifstream bin ("statabin.txt", ios::binary);
    char binar;
    while(!bin.eof()){
        bin.get(binar) ;
        if(binar == '0') /*&& bin.get() == 'x' && bin.get() =='0' && bin.get() == 'a')*/
            cout << "try";
        
    }
    
    FILE *fbin = fopen("statabin.txt", "r+b");
    char hop[3];
    char qwe[5] = "0xa1";
    //fread(hop, sizeof(hop), 3, fbin);
    //cout << hop;
    //cout << qwe;
    //Сортировка 
    statistic sort;
    for(int i=0; i < amount-1; i++){
        if(team[i].score < team[i+1].score){
            sort = team[i];
            team[i] = team[i+1];
            team[i+1] = sort;
            i = -1;
        }
    }
    //Запись таблицы в файл
    ofstream out_table("table.txt");
 
    out_table <<  "\t\t ---Таблица Результатов---" << endl;
    out_table << setw(15) <<  "Название команды:" << "\t" <<" Количество очков:" << endl;
 
    for (int i = 0; i < amount; i++)
        out_table << setw(15) << team[i].name << "\t\t\t" << team[i].score << endl;
    cout << "Таблица сохранена в файле \"table.txt\" " << endl;
    out_table.close();
 
    FILE *bite;
 
 
    
    delete [] team;
 
    system("pause");
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 12:17     Счёт последовательностей бинарных файлов
Посмотрите здесь:

чтение бинарных файлов C++
C++ Чтение бинарных файлов
C++ Чтение бинарных файлов
Запись бинарных файлов C++
C++ Осуществить конкатенацию двух файлов за счёт создания третьего файла (Маленькая доработка)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.03.2014, 13:31     Счёт последовательностей бинарных файлов #2
Цитата Сообщение от Ma3au Посмотреть сообщение
Но теперь нужно сделать функцию которая будет считать последовательности байт "0x0A, 0x0O) в этом файле. Вообще не понимаю работу с бинарными файлами и как это организовать.
Читайте, бинарным методом, char (те же байты) из файла.
Ma3au
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 14
27.03.2014, 19:06  [ТС]     Счёт последовательностей бинарных файлов #3
А само преобразование файла верное?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.03.2014, 20:03     Счёт последовательностей бинарных файлов #4
Цитата Сообщение от Ma3au Посмотреть сообщение
А само преобразование файла верное?
Если в каждой строке файла, записанного в текстовом режиме, находятся данные одной структуры, то верное, но нерациональное. Не нужно считать строки и создавать, под количество строк, массив структур. Нужно читать файл (до конца файла) в одну струкруру, и записывать, считанную структуру, бинарным методом.

Добавлено через 3 минуты
Режет глаз смесь функций С и С++. Что-то одно выберите (С++).
Ma3au
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 14
27.03.2014, 20:57  [ТС]     Счёт последовательностей бинарных файлов #5
Большое спасибо, но со считыванием последовательностей всё равно не доходит
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.03.2014, 21:20     Счёт последовательностей бинарных файлов #6
Цитата Сообщение от Ma3au Посмотреть сообщение
но со считыванием последовательностей всё равно не доходит
Как-то так:
C++
1
2
3
4
    FILE* fin = fopen("statabin.txt", "rb");
    char ch;
    while (fread(&ch, 1, sizeof(ch), fin))
        printf("%X ", ch);
Ma3au
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 14
27.03.2014, 21:40  [ТС]     Счёт последовательностей бинарных файлов #7
Блин, а где здесь интересующие меня последовательности?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.03.2014, 21:59     Счёт последовательностей бинарных файлов #8
Цитата Сообщение от Ma3au Посмотреть сообщение
Блин, а где здесь интересующие меня последовательности?
Блин, в файле.
Ma3au
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 14
27.03.2014, 22:05  [ТС]     Счёт последовательностей бинарных файлов #9
Ну это понятно) а вот в коде который ты написал, там же и упоминания нету о "0x00A", "0x00O". И если вставить его в мой код, то ничего не выводит
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.03.2014, 22:17     Счёт последовательностей бинарных файлов #10
Цитата Сообщение от Ma3au Посмотреть сообщение
0x00O
Вот это что за число?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2014, 03:58     Счёт последовательностей бинарных файлов
Еще ссылки по теме:

Объединение двух бинарных файлов C++
Записать данные двух бинарных файлов в один C++
C++ Сравнение бинарных файлов

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

Или воспользуйтесь поиском по форуму:
Ma3au
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 14
28.03.2014, 03:58  [ТС]     Счёт последовательностей бинарных файлов #11
Без понятия
Yandex
Объявления
28.03.2014, 03:58     Счёт последовательностей бинарных файлов
Ответ Создать тему
Опции темы

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