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

Копирование файлов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обьясните пожалуйста http://www.cyberforum.ru/cpp-beginners/thread341942.html
/*Эта программа преобразует галлоноы в литрыс помощью чисел с плавающей точкой.*/ #include <iostream> using namespace std; int main() { double gallons,liters; cout<<"Введите количество галлонов:"; cin >> gallons; " Ввод данных галлонов: ";
C++ Помогите разобраться с switch Вот код программы: int i_1x; i_1x = 0; char a_n; ifstream input("input.txt"); input >> a_n; switch (a_n) http://www.cyberforum.ru/cpp-beginners/thread341914.html
C++ Видимость в классах
Дана программа #include<iostream> using namespace std; class a {protected: int a1; public: void fc() {a1=5;cout<<a1<<endl;
C++ Потоки. Ввод данных.
Если согласится на ввод второго человека, пропускается ввод его имени... вроде ввод все правильно, не знаю в чем беда :wall: #include"stdafx.h" #include <iostream> using namespace std; class NameDataSet{ public: char FirthName; char LastName; int creditCard;
C++ Проблема с открыванием http://www.cyberforum.ru/cpp-beginners/thread341886.html
У меня компилятор Dev-C++ версии 4.9.9.2 набрал текст скомпилировал удачно Компилятор: Default compiler Выполнение g++.exe... g++.exe "C:\Documents and Settings\777\Мои документы\Мои ресунки\primer.cpp" -o "C:\Documents and Settings\777\Мои документы\Мои ресунки\primer.exe" -g3 -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" ...
C++ Построение графика по заданному математическому закону я только недавно изучаю С++, на работе поставили задачу реализовать построение графика по заданному математическому закону: An = An-1 + (1/m)*СO, где n и n-1 это соответственно предыдущий и следущий шаги, СO - просто переменная, именуемая сигналом ошибки, вбил это в excel, чтобы посмотреть что за график хоть, оказалась обычная гипербола до какого-то порогового значения, но как реализовать... подробнее

Показать сообщение отдельно
Karponter
1 / 1 / 0
Регистрация: 28.06.2012
Сообщений: 14
28.06.2012, 02:12     Копирование файлов
Здравствуйте! Столкнулся с похожей проблемой: нужно "склеить" содержимое нескольких разнотипных файлов в один так, чтобы потом распаковать их обратно. Уже несколько дней бьюсь над этой проблемой, постоянно натыкаюсь на определенные ошибки. Вот сейчас попробовал способ, описанный выше, а именно - скопировать полностью один из файлов в буфер, потом записать в нужный мне файл. Разные файлы в таком себе "пакете" разделяю тегами.

Вот собственно код:
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
            char th_name[128], th_path[256]={'\0'};
            long int cnt;
            system("cls");
            puts("--<Упаковать тему>--");
            puts("---<Набор файлов>---");
            CallHelp("MainMenu");
 
        // --------- Создаем файл темы ---------
            puts("Введите название темы оформления:");
            scanf("%s",th_name);
 
            if(strcmp(th_name,"#back")==0)                              // проверка на наличие управляющего кода ->
                return 1;                                               // возврата в главное меню.
 
            strcat(strcat(strcat(th_path,"Themes\\"),th_name),".thp");  // генератор пути к файлу
 
            dest_pointer=fopen(th_path,"wb");
            if(dest_pointer==NULL)
            {
                puts("\n\nОшибка открытия файла. Возврат к главному меню.");
                system("pause");
                return 1;
            }
 
        // ---------Работа с файлом explorer.exe---------
            printf("Введите путь к файлу explorer.exe:   ");
            scanf("%s",th_name);
            printf("Выполняется упаковка файла explorer.exe:   ");
            exp_pointer=fopen(th_name,"rb");                // открытие файла explorer.exe
            if(exp_pointer==NULL)                           // проверка на корректность открытия файла
            {
                puts("\n\nОшибка открытия файла. Возврат к главному меню.");
                fclose(dest_pointer);
                system("pause");
                return 1;
            }
            fprintf(dest_pointer,"-<[EXP]");                // внесение в пакет открывающего тега EXP
 
            //--------Копирование---------
            fseek(exp_pointer,0L,SEEK_END);                 // переходим в конец файла
            cnt=ftell(exp_pointer);                         // узнаем длинну файла
            char *buffer=(char*)malloc(cnt*sizeof(char));   // выделяем память для буфера
            fseek(exp_pointer,0,SEEK_SET);                  // переходим в начало файла
 
            if(cnt!=fread(buffer,cnt,1,exp_pointer))        // проверка корректности считываемых данных, сохранение файла в буфер
            {
                puts("\n\nОшибка выделения памяти для буфера. Возврат к главному меню.");
                fclose(dest_pointer);
                fclose(exp_pointer);
                free(buffer);
                system("pause");
                return 1;
            }
            fwrite(buffer,1,cnt,dest_pointer);              // дозапись файла в пакет
 
            fclose(exp_pointer);                            // закрываем файл
            free(buffer);                                   // очистка буфера
            printf("ГОТОВО\n");                             // сигнал
 
 
            fclose(dest_pointer);                           // завершаем пакетный файл темы
            puts("Файл успешно создано. Возврат к главному меню.");
            system("pause");
            return 2;
Проблема в том что всегда выдает ошибку, описанную в этом условии:
C++
1
if(cnt!=fread(buffer,cnt,1,exp_pointer))
В чем может заключаться проблема?
 
Текущее время: 04:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru