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

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

Восстановить пароль Регистрация
 
SphiNkSs
5 / 5 / 1
Регистрация: 28.03.2010
Сообщений: 143
20.05.2010, 10:42     Как копировать не копируя? #1
Здавствуйте, нужно написать программу которая копирует файлы... Проблема же заключается в том, что стандартные функции копирования(такие как 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;}
но программа должна копировать не только текстовые файлы, а вобще все подряд... Подскажите, пожалуйста какими функциями можно воспольоваться чтобы выполнить задачу???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gh05t
47 / 46 / 4
Регистрация: 03.04.2010
Сообщений: 99
20.05.2010, 11:27     Как копировать не копируя? #2
WinAPI функции CreateFile, ReadFile, WriteFile. И не забывай про CloseHandle
oxotnik
 Аватар для oxotnik
1584 / 1061 / 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
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
20.05.2010, 13:35     Как копировать не копируя? #5
C++
1
system("copy source_path /b destination_path /b");
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
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++

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

Или воспользуйтесь поиском по форуму:
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
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     Как копировать не копируя?
Ответ Создать тему
Опции темы

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