Здравствуйте.
Помогите разобраться.
Программа считывает файл в буфер. Вывод на экран из буфера.
Программа должна осуществить замер времени от начала считывания из файла до момента вывода на экран последнего символа.
Имя файла и размер буфера задается с командной строки как параметры. Буфер 1Кб, 10Кб, 20Кб и т.д. до 64Кб.
Не могу понять в чем дело. В тексте я пометил подозрительную строку как /*???*/. Вот если на ней установить breakPoint, то выдается ошибка — invalid BreakPoint и эта строка игнорируется вообще в программе.
Если же в этой строке указать функцию _read(...), то ошибка — invalid BreakPoint не выдается.
Далее. Считывание файла проходит более менее нормально при размерах буфера до 30Кб,
При 40Кб получаем.
bytes = read(handle,buf,sbuf)
равно нулю или отрицательному значению. В чем дело?
Пробовал на файлах разного размера от 61Кб до 15Мб.
Посоветуйте что делать.Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <io.h>
#include <alloc.h>
#include <time.h>
#include <FCNTL.H>
int main(int argc, char ** argv)
{
/* Переменные для работы с файлом */
int handle;
long bytes;
char *buf;
long sbuf;
/* Переменные для подсчета времени */
time_t tm1, tm2;
clrscr(); // очистка экрана
/* Открываем файл */
if ((handle = open(_argv[1], O_RDONLY)) == -1)
{
printf("Error Opening 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);
/*??? см.тут*/ bytes = read(handle,buf,sbuf);
while(bytes>0)
{
printf(buf);
bytes = read(handle,buf,sbuf);
};
tm2 = time(NULL);
delete(buf);
close(handle);
printf("\n\n==============================================");
printf("\nРазмер буфера: %ld kb",sbuf/1024);
printf("\nВремя обработки: %ld сек.",tm2-tm1);
return 0;
}