C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Кто как открывает файлы?, Кто как открывает файлы?
Idler
Отправлено: 08.02.2005, 10:28


Не зарегистрирован







Мне надо считать текстовый файл в char* сразу целым блоком (по размеру файла).

FILE *f = fopen(fn, "r");
fgets(s, (int)FileSize, f);
/*Проблема: fgets — читает только до первого переноса строки, в том числе в режимах "rt", "rb", "r+"*/

int f = _open(... и т.д.
_read(...
/*Проблема: (некоторые символы ,например, '\n' (перенос строки) — в файле занимают 2 байта) _read — считывает в строку весь файл и за файлом разницу между кроличеством байтов и количеством символов*/

ifstream f1(fn1, ios::nocreate);
f1.read(s, fs);
/*считает только до конца файла, да еще в конце 0 ставит — ай маладца!*/

как еще можно решить эту задачу, и как решить проблемы?
есть ли не DOS-овские функции, я почему-то не нашел?
AVC
Отправлено: 08.02.2005, 10:45


Ветеран

Группа: Модератор
Сообщений: 1583



Откройте файл в моде "rb" (или соответствующем аналоге) и будете читать все символы подряд.
Я люблю fread, с ним больше возни, зато приемлемая скорость.
olegenty
Отправлено: 08.02.2005, 11:04


Ветеран

Группа: Модератор
Сообщений: 2412



по синтаксису и функциональным возможностям интерфейса больше нравится fstream, но эта штука не умеет корректно работать с unsigned char, как следствие — куча незаметных граблей при работе с отечественной кодировкой, независимо от того, 866 она, или 1251. я наступал — было неприятно. кроме того, некорректно работает с длинными путями с русскими символами (хотя, говорят, зависит от версии STLPort. последнюю поставить не смог, а встроенная в BCB глючит)

Лично для себя приближаюсь к мысли, что WinAPI рулит.
Gedeon
Отправлено: 08.02.2005, 12:47


Ветеран

Группа: Модератор
Сообщений: 1742



Каждый раз могу делать по разному, м. сказать как в голову стукнет, но тоже больше всего люблю винапи.
Alex1000
Отправлено: 22.12.2005, 20:30


Не зарегистрирован







смотри хелп по функциям FileOpen, FileRead, FileWrite, FileClose

Вернуться в Вопросы программирования в C++Builder