Страница 1 из 2
Проблема с записью/чтением файлов
Добавлено: 23 май 2004, 17:18
nucer
Возникла у меня тут такая проблема - не читаются до конца файлы больше ~16 Kb, причём любым способом. Если использую fread, то читается только кусок размером эти самые ~16 Kb, а если последовательно fgetc'ем, то тоже читает только кусок, а потом ошибку выдаёт и закрывает прогу. Аналогичная фигня с записью.
Использую Borland C++ 3.1 , под DOS.
Добавлено: 23 май 2004, 18:25
Andy
Код реализации чтения/записи в студию.
Добавлено: 23 май 2004, 20:24
nucer
Код: Выделить всё
#include "io.h"
#include "stdio.h"
void main ()
{
FILE *HNDL = fopen( "some.txt" , "rb" );
FILE *NEW = fopen( "new.txt" , "wb" );
unsigned long L = filelength( fileno( HNDL ) );
char *DATA = new char[L];
for ( unsigned long i = 0 ; i < L ; i++ )
{
DATA[i] = fgetc( HNDL );
fputc( DATA[i] , NEW );
}
fclose( HNDL );
fclose( NEW );
}
Да хоть такой.
Добавлено: 24 май 2004, 08:13
subver
nucer писал(а):Код: Выделить всё
#include "io.h"
#include "stdio.h"
void main (]
Да хоть такой.[/quote]
Странно, у меня этот код работает в лучшем виде!
Добавлено: 24 май 2004, 14:57
nucer
Я только с размером наврал маленько, глюки при размере ~>60 Kb. А глюк такой, что не работает вот этот вот кусок
, то бишь проблемы с таким размером массива.
Добавлено: 24 май 2004, 16:47
Eugie
глюки при размере ~>60 Kb
Под DOS имеется проблема с адресацией блоков данных длиной > 64K. Попробуй добавить __huge в объявление указателя или используй соотвествующую модель памяти.
И еще: не читай файл побайтово - очень неэффективно. Пользуйся fread.
Добавлено: 24 май 2004, 18:19
Конструктор
Разве DOS в сосотянии за раз обработать что-то большее 64к? Вроде ему адресация не должна это позволить никаким образом.
Добавлено: 24 май 2004, 18:33
Absurd
Разве DOS в сосотянии за раз обработать что-то большее 64к? Вроде ему адресация не должна это позволить никаким образом.
Если использовать спецсредства для работы с указателями, то можно.
Добавлено: 24 май 2004, 20:03
nucer
2Absurd И что же это за средства?
Добавлено: 24 май 2004, 21:21
Romeo
nucer, не слышал про far указатели? :-) Это когда переменная хранит не только смешение в сегменте, но и адрес сегмента.