перевожу прогу из-под ДОСА\Винды, у меня структура, считываемая с файла, не соответствует по расположению полей, вот понял что long(int)выравнивается на границу слова, а как бы от этого отказаться?
и что, выравниевание дает какое-то ускорение работы?
Использует двоичные файлы с общим доступом и на чтение и на запись
Может кто посоветует, какие указывать флажки при вызове open(...)
И что будет по умолчанию в отсутствие 3-го параметра?
Всем все разрешено? или наоборот запрещено?
Связанный с этой проблемой вопрос - чем заменить функции lock() и unlock() - для блокирования участка этих файлов, ну или пусть всего файла
Извиняюсь, я на таких форумах новичок, не уверен как лучше сформулировать свою проблему и реально ли получить помощь от местной публики
Предыстория:
у меня огромная прога (учетная система для торговли) созданная на C с нуля еще до эпохи Windows. Потом переделана как консольное приложение Win32, теперь вот есть идея для Linux адаптировать.
Фактически только модуль ввода-вывода и требуется переделать.
И вот уже неделю я парюсь с выводом кириллицы. В теории (описания и маны) все понятно очевидно и легко. При выводе латинских букв - тоже все соответствует описанию, как только выводятся кириллические (кодируемые в UTF 2ми байтиками) - какие-то глюки
Стал смотреть тогда дамп экрана (scr_dump)
Во-первых, оказалось его размер -8К . т.е. разработчики отводят 4байта на знакоместо. Ну это я понимаю. ОК. 3 знака на код символа UTF + байт цветового атрибута. Ан нет! при выводе кириллицы 4байта отводится на кадый байт кодировки!!! т.е. 8 байт на символ
Но тогда буфер экрана в 8К не хватит, если достаточно много кириллических символов
И его таки не хватает
На каждой строке экрана корректно выводится 40 кириллических знаков, а не 80 как хотелось бы!
Подозреваю, у меня как-то криво собрана библиотека ncurses, либо она не соответствует UTF кодировке
И сразу вдогонку вопрос - может UTF и ни к чему? Вообще-то меня бы вполне устроила кодировка 866 кодовой таблицы.