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

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

Войти
Регистрация
Восстановить пароль
 
SphiNkSs
5 / 5 / 1
Регистрация: 28.03.2010
Сообщений: 143
#1

Как копировать не копируя? - C++

20.05.2010, 10:42. Просмотров 471. Ответов 6
Метки нет (Все метки)

Здавствуйте, нужно написать программу которая копирует файлы... Проблема же заключается в том, что стандартные функции копирования(такие как CopyFile) использовать нельзя... То есть необходимо открыть файл считать все из него и записать в другой... Если бы дело касалось только текстовых файлов, можно было бы ограничиться:
C++
1
2
3
4
5
6
7
8
9
10
11
12
ofstream NEWFILE;
FILE *fp;
char bufer[2]; 
fp=fopen(FileName,"r");
if(fp==NULL) 
   {MessageBox::Show("Файл не найден","Ошибка"); return;}                       
NEWFILE.open(NewFileName);
   if(NEWFILE==NULL) 
   {MessageBox::Show("Невозможно создать файл","Ошибка"); return;}
while(!feof(fp))
   {fgets(bufer,2,fp);
   NEWFILE<<bufer;}
но программа должна копировать не только текстовые файлы, а вобще все подряд... Подскажите, пожалуйста какими функциями можно воспольоваться чтобы выполнить задачу???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2010, 10:42     Как копировать не копируя?
Посмотрите здесь:

<fstream> как копировать файлы? C++
Копировать, перенести, удалить файлы в C++ C++
как создать программу которая будет себя копировать? C++
C++ Начинающему копировать слова из текстового файла
C++ C++ структуры. Копировать
Как лучше копировать память, обмениваться указателями и т.д. при работе с кучей динамических библиотек (DLL) ? C++
Как из переменной копировать цифры посимвольно в массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gh05t
47 / 46 / 4
Регистрация: 03.04.2010
Сообщений: 99
20.05.2010, 11:27     Как копировать не копируя? #2
WinAPI функции CreateFile, ReadFile, WriteFile. И не забывай про CloseHandle
oxotnik
 Аватар для oxotnik
1586 / 1063 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
20.05.2010, 11:30     Как копировать не копируя? #3
открыть в бинарном виде (оба - источник и приемник) и перелить всю инфу.
SphiNkSs
5 / 5 / 1
Регистрация: 28.03.2010
Сообщений: 143
20.05.2010, 11:34  [ТС]     Как копировать не копируя? #4
Нашел пример в инете, разобрался... Если кому пригодится:
C++
1
2
3
4
5
6
7
8
9
10
11
FILE *in,*out;
char ch;
if ((in = fopen(StrTo4ar(textBox1->Text), "rb")) == NULL)
   {MessageBox::Show("Файл не найден","Ошибка"); return;}   
if ((out = fopen(StrTo4ar(Name), "wb"))  == NULL)
   {MessageBox::Show("Невозможно создать файл","Ошибка"); return;}  
while (!feof(in))
   {ch=fgetc(in);  
   fputc(ch, out);}
fclose(in);
fclose(out);
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
20.05.2010, 13:35     Как копировать не копируя? #5
C++
1
system("copy source_path /b destination_path /b");
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.05.2010, 09:23     Как копировать не копируя? #6
C
1
2
3
while (!feof(in))
   {ch=fgetc(in);  
   fputc(ch, out);}
Очень тормозной способ надо сказать - копировать под одному символу.
Ищи пример где копируется с использованием буфера
и с помощью функций fread(), fwrite()

А еще лучше - open(), read(), write(), close()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2010, 09:24     Как копировать не копируя?
Еще ссылки по теме:

C++ Копировать строку содержащую нулевые символы
Копировать содержимое вектора в другой C++
Копировать в обратном порядке C++
C++ Копировать байты из массива char в int
C++ Как правильно копировать и добавлять вектора?

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

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.05.2010, 09:24     Как копировать не копируя? #7
C++
1
system("copy source_path /b destination_path /b");
Скорее все-таки system( "copy /b source_file dest_file" );
Но в любом случае это не портабельно и будет работать только под Windows
Yandex
Объявления
21.05.2010, 09:24     Как копировать не копируя?
Ответ Создать тему
Опции темы

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