Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <io.h>
#include <conio.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <malloc.h>
#include <errno.h>
void main(int, char *[]);
void main(int argc, char *argv[]) {
int source, taget, i;
char *buffer;
unsigned count;
if(argc == 3) {
// ЋвЄалў Ґ¬ Ёбе®¤л© Є®ЇЁагҐ¬л© д ©«
if((source = open(argv[1], O_BINARY | O_RDONLY)) == - 1) {
printf("\nЋиЁЎЄ ЇаЁ ®вЄалвЁЁ Ёб室®Ј® д ©« : %d",
errno);
exit(-1);
}
// ЋвЄалў Ґ¬ ўл室®© д ©«. ЏаЁ Ґ®Ўе®¤Ё¬®б⨠ᮧ¤ Ґ¬
// ®ўл©. …б«Ё д ©« 㦥 бгйҐбвўгҐв, ўлў®¤Ё¬ нЄа
// § Їа®б ЇҐаҐ§ ЇЁбм ᮤҐа¦Ё¬®Ј® бгйҐбвўго饣® д ©«
taget = open(argv[2], O_BINARY | O_WRONLY | O_CREAT | O_EXCL,
S_IREAD | S_IWRITE);
if(errno == EEXIST) {
printf("\n” ©« бгйҐбвўгҐв. ЏҐаҐ§ ЇЁб вм? (Y,N)\n");
// Ћ¦Ё¤ Ґ¬ ®вўҐв ®ЇҐа в®а Ё «Ё§Ёа㥬 ҐЈ®
i = getch();
if((i == 'y') || (i == 'Y'))
taget = open(argv[2], O_BINARY | O_WRONLY | O_CREAT | O_TRUNC,
S_IREAD | S_IWRITE);
}
// …б«Ё ўл室®© д ©« ®вЄалвм Ґў®§¬®¦®, ўлў®¤Ё¬
// б®®ЎйҐЁҐ ®Ў ®иЁЎЄҐ Ё § ўҐаи Ґ¬ а Ў®вг Їа®Ја ¬¬л
if(taget == -1){
printf("\nЋиЁЎЄ ЇаЁ ®вЄалвЁЁ ўл室®Ј® д ©« : %d",
errno);
exit(-1);
}
// Ѓг¤Ґ¬ зЁв вм Ё ЇЁб вм § ®¤Ё а § 10000 Ў ©в®ў
count = 10000;
// ‡ Є §лў Ґ¬ ЎгдҐа ¤«п ЇҐаҐ¤ зЁ ¤ ле
if((buffer = (char *)malloc(count)) == NULL) {
printf("\nЌҐ¤®бв в®з® ®ЇҐа вЁў®© Ї ¬пвЁ");
exit(-1);
}
// Љ®ЇЁа㥬 Ёбе®¤л© д ©«
while(!eof(source)) {
// —Ёв Ґ¬ count Ў ©в®ў ў ЎгдҐа buffer
if((count = read(source, buffer, count)) == -1) {
printf("\nЋиЁЎЄ ЇаЁ з⥨Ё: %d",
errno);
exit(-1);
}
// ‚лЇ®«пҐ¬ § ЇЁбм count Ў ©в®ў Ё§ ЎгдҐа ў ўл室®© д ©«
if((count = write(taget, buffer, count)) == - 1) {
printf("\nЋиЁЎЄ ЇаЁ § ЇЁбЁ: %d",
errno);
exit(-1);
}
}
// ‡ Єалў Ґ¬ ўе®¤®© Ё ўл室®© д ©«л
close(source);
close(taget);
// Ћбў®Ў®¦¤ Ґ¬ Ї ¬пвм, § Є § го Ї®¤ ЎгдҐа
free(buffer);
}
// …б«Ё ЇаЁ § ЇгбЄҐ Їа®Ја ¬¬л Ґ Ўл«Ё гЄ § л
// ЇгвЁ ¤«п ўе®¤®Ј® Ё«Ё ўл室®Ј® д ©« ,
// ўлў®¤Ё¬ б®®ЎйҐЁҐ ®Ў ®иЁЎЄҐ
else
printf("\n"
"‡ ¤ ©вҐ ЇгвЁ ¤«п Ёб室®Ј®"
" Ё १г«мвЁаго饣® д ©«®ў!\n");
}