Лабораторная работа: Програми копіювання файлів

setvbuf( stream_from, buf1, _IOFBF, sizeof( buf1 ) );

setvbuf( stream_to, buf2, _IOFBF, sizeof( buf2 ) );

Викликаємо функцію для копіювання, при цьому підраховуємо затрачений на її виклик час та використану пам'ять.

start = clock();

filecpy( stream_from, stream_to );

end = clock();

printf( "Copying time is %5.1f. Buffer size is %d bytes\n",

( ( float )end - start ) / CLK_TCK, BUFSIZ * 10 );

Відкриваємо файл, який варто копіювати, та файл до якого варто копіювати.

if( ( stream_from = fopen( argv[ 1 ], "rt") ) == NULL )

exit( 1 );

stream_to = fopen( argv[ 2 ], "wt+" );

Задаємо буфери. Але потіки не буферизується, оскільки використовується режим _IONBF .

setvbuf( stream_from, NULL, _IONBF, 0 );

setvbuf( stream_to, NULL, _IONBF, 0 );

Викликаємо функцію для копіювання, при цьому підраховуємо затрачений на її виклик час та використану пам'ять.

start = clock();

filecpy( stream_from, stream_to );

end = clock();

printf( "Copying time is %5.1f. Buffers is not used\n",

( ( float )end - start ) / CLK_TCK );

exit( 0 );

}

Функція копіювання файлів з використанням потоку вводу/виводу.

Аргументи: FILE *stream_from - покажчик на потік звідки копіювати;

FILE *stream_to - покажчик на потік в який копіювати;

Функція нічого не повертає і не використовує глобальних змінних.

void filecpy( FILE *stream_from, FILE *stream_to ) {

Оголошуємо символьний масив на 256 знаків

К-во Просмотров: 321
Бесплатно скачать Лабораторная работа: Програми копіювання файлів