Лабораторная работа: Програми копіювання файлів
Оголосимо змінні:
time_t start, end;
FILE *stream_from, *stream_to;
Перевіряємо чи правильна кількість аргументів у командному рядку. Якщо аргументів не три (програма, файл для копіювання, файл-копія), виводиться повідомлення про правильність заповнення командного рядка і виконання програми завершується.
if( argc < 3 ) {
printf( "\nUsage:"
" COPY2 [d:][\\path]source_file [d:][\\path]target_file\n" );
exit( 1 );
}
Відкриваємо файл, який варто копіювати, для читання.
if( ( stream_from = fopen( argv[ 1 ], "rt" ) ) == NULL ) {
printf( "\nOpen source file error: %d", errno );
exit( 1 );
}
Відкриваємо файл, в який варто копіювати, для запису(якщо файлу не існує, він створюється, якщо існує - перезаписується).
stream_to = fopen( argv[ 2 ], "wt+" );
Вмикаємо тактовий лічильник, і його стартове значення присвоюємо змінній start.
start = clock();
Викликаємо функцію для копіювання і передаємо їй покажчик на файл який варто копіювати і на файл до якого необхідно копіювати.
filecpy( stream_from, stream_to );
Вимикаємо тактовий лічильник, і його фінальне значення присвоюємо змінній end.
end = clock();
Друкуємо інформацію про затрачений час на виконання функції і про розмір буферу який довелося використати.
printf( "Copying time is %5.1f. Buffer size is %d bytes\n",
( ( float )end - start ) / CLK_TCK, BUFSIZ );
Відкриваємо файл, який варто копіювати, та файл до якого варто копіювати.
if( ( stream_from = fopen( argv[ 1 ], "rt") ) == NULL )
exit( 1 );
stream_to = fopen( argv[ 2 ], "wt+" );