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

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

Войти
Регистрация
Восстановить пароль
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
#1

В файл скопировать информацию из дочерних файлов с заменой - C++

20.08.2012, 23:24. Просмотров 887. Ответов 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
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
122
123
124
// blja.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
long long hextodec(char hex16[],short int leng)
{
    long long dec10 = 0,st16=16;
    short int i,j,k,temp=0;
    for(i=0,j=leng-1;i<leng;i++,j--)
    {
        switch(hex16[j])
        {
        case 'A':
            temp=10;
            break;
        case 'B':
            temp=11;
            break;
        case 'C':
            temp=12;
            break;
        case 'D':
            temp=13;
            break;
        case 'E':
            temp=14;
            break;
        case 'F':
            temp=15;
            break;
        default:
            temp=hex16[j]-'0';
        }
        if(i==0)
            dec10+=temp;
        else if(i==1)
            dec10+=temp*16;
        else
        {
            for(k=1;k<i;k++)
                st16*=16;
            dec10+=temp*st16;
            st16=16;
        }
    }
    return dec10;
}
 
void hren()
{
    system("chcp 1251");
    system("cls");
    cout<<"                 Программа для работы с бинарными файлами v1.0"<<endl<<"                                by ZaMaZaN4iK"<<endl;
    cout<<endl<<endl<<endl<<"Введите кол-во файлов, которые Вы хотите скопировать в главный файл : ";
}
 
int main()
{
    char hex16[9],file[256],symb;
    short int leng=0;
    long long temp=0,decas=0,decaf=0,raz=0,j=0,dig=0;
    int kol;
    hren();
    cin>>kol;
    cout<<"Пожалуйста ждите..."<<endl;
    ifstream adr("адреса.txt");
    ifstream files("files.txt");
    ifstream main("main.txt",ios::binary);
    fstream vrem("vrem.txt",ios::binary|ios::trunc|ios::in|ios::out);
    for(temp=0;temp<kol;temp++)
    {
        adr>>hex16;
        leng=strlen(hex16);
        decas=hextodec(hex16,leng);
        adr.seekg(2,ios::cur);
        adr>>hex16;
        leng=strlen(hex16);
        decaf=hextodec(hex16,leng);
        files>>file;
        ifstream other(file,ios::binary);
        if(temp==0)
        {
            
            for(j=0;j<decas;j++)
            {
                symb=main.get();
                vrem<<symb;
            }
        }
        else
        {
            for(j=0;j<decas-dig-1;j++)
            {
                symb=main.get();
                vrem<<symb;
            }
        }
        for(j=0;j<decaf-decas+1;j++)
        {
            symb=other.get();
            vrem<<symb;
        }
        dig=decaf;
        main.seekg(decaf+1);
    }
    if(!main.eof())
    {
        while(!main.eof())
        {
            if((symb=main.get()) != 'я')
            vrem<<symb;
        }
    }
    files.close();
    adr.close();
    vrem.close();
    main.close();
    system("pause");
}
Скажите пожалуйста, нормально ли он написан?

и ещё вопрос - после того, как все файлы скопированы в главный, оставшаяся часть главного файла копируется в выходной файл.И тут проблема - я копирую, пока не встертится конец файла.Но если я так копирую, то выводится символ 'я'.Я написал грубую проверку на символ "я", но мне такое не нравится.Как сделать по другому?

P.S не смотрите на имена файлов, мол расширение не bin а txt - я потом изменю.это тестовая версия проги.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 23:24     В файл скопировать информацию из дочерних файлов с заменой
Посмотрите здесь:

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

Заполнить файл целыми случайными числами, скопировать чётные в другой файл - C++
Заполнить в файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g те...

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

Скопировать файл - C++
Помогите написать.... Используйте любой файл данных. Перепишите данные в другой файл, то есть сделайте копию файла.

Как читать информацию из разных файлов? - C++
Как читать из разных файлов, чтобы каждую новую итерацию цикла информация начинала считываться со следующего файла?Файлы именованы 1, 2, 3,...

Скопировать файл. Не копирует. - C++
Пытаюсь понять, как же в С++ скопировать файл. Что-то не копируется :). Наверное я вообще неадекватную чушь накодил, но пока мало что...

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

Скопировать текст из консоли в файл - C++
после компиляции и выполнения программы borland c++ выскакивает черное окошко с информацией как достать оттуда текст в блокнот?

Скопировать один файл в другой - C++
Создаю 2 файл, в первый записываю цифры. Почему в файле они выводятся в битой кодировке, даже не в кодировке, в в каракулях?) И второе,...

Скопировать в файл F2 только четные строки из F1 - C++
Постановка задачи: Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию Выполнить задание. При...

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

Как скопировать файл из одной папки в другую? - C++
Люди, помогите!!! Как скопировать файл из одной папки в другую? Только построчно или есть какая-то функция? Еще заморочка - этой файл...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
21.08.2012, 00:26     В файл скопировать информацию из дочерних файлов с заменой #2
ZaMaZaN4iK, допустим D4 - 16-ое число и n кол-во цифр, тогда мы 13*(16^(n-1)) + 4*(16^(n-2)) и получаем число 212, у вас программа так-же это делает ?.
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
21.08.2012, 00:33  [ТС]     В файл скопировать информацию из дочерних файлов с заменой #3
Вы спрашиваете про функцию hextodec?Она работает правильно, можете не сомневатся(уже проверено)
Ответ Создать тему
Опции темы

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