Ну вообщем наваял что-то на уровне интуиции.
Вроде бы работает, хотя есть вопросы.
Например, при выделении памяти под буфер
buf = new(char[sbuf])
Почему он не пустой. В нем сразу есть какой-то мусор.
И еще. Если сделать вот так,
sbuf = (atoi(_argv[2]))*1024;
то переменная равна нулю. Приходится делать вот так
sbuf = (atoi(_argv[2]));
sbuf *= 1024;
А вот и сам текст.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <dos.h>
int main(int argc, char ** argv){
/* Переменные для работы с файлом */
FILE *stream;
char *buf;
long sbuf;
long rd;
/* Переменные для подсчета времени */
time_t tm1, tm2;
clrscr(); // очистка экрана
/* Открываем файл на чтение.
Если ошибка - выведи сообщение и прекрати работу. */
if ((stream = fopen(_argv[1],"r")) == NULL)
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
/* размер буфера */
sbuf = (atoi(_argv[2]));
sbuf*=1024;
/* Выделяем память для буфера.
Если ошибка - выведи сообщение и прекрати работу. */
if((buf = new(char[sbuf]))==NULL)
{
printf("Not enough memory to allocate buffer\n");
return -1;
};
/* засекаем время старта */
tm1 = time(NULL);
/* читаем и выводим на экран пока не будет конец файла,
т.е. пока возвращаемый функцией результат будет положительным */
do{
rd = (unsigned int) fread(buf, sbuf, 1, stream);
printf(buf);
} while(rd>0);
/* засекаем время конца считывания */
tm2 = time(NULL);
/* закрываем файл */
fclose(stream);
/* освобождаем память, выделенную под буфер */
delete(buf);
/* выводим на экран результаты работы программы */
printf("\n\n==============================================");
printf("\nРазмер буфера: %ld kb",sbuf/1024);
printf("\nВремя обработки: %ld сек.",tm2-tm1);
return 0;
}