uliss Опубликовано 27 октября, 2005 Жалоба Опубликовано 27 октября, 2005 Добрый день! Проблема такая, мне один сторонник Windows пытается доказать, что в ней файлы не делятся на текстовые и бинарные - аргументы простые крики и ругань Просто я читал где-то по этому вопросу. Помогите разобраться, плиз. 1. Я понимаю, что низкоуровневым функциям ввода вывода все равно. Им плевать на <CR><LF>. WinAPI функции для работы с файлами читают просто поток символов. 2. Я имею в виду не MIME-типы. 3. Мне нужно разобраться с режимами открытия файлов в языках типа C, C++, Perl, PHP. Так как, опыта в Windows у меня меньше, чем в Linux (так бывает), то в чем разница, кроме трансляции символа '\n'. И что может произойти, если открывать в Windows текстовые файлы с флагом 'b'. Будут ли от этого некорректно работать функции чтения или записи строк? Смотрел историю вопроса, в Windows последовательность "\r\n" появилась для совместимости со старыми терминалами и принтерами. Если, знаете, подскажите, что почитать по этому вопросу. И правомерно ли такое утверждение: В Windows файлы делятся на текстовые и бинарные. (Не ОНА их делит, а они ДЕЛЯТСЯ) Цитата
Byte Опубликовано 27 октября, 2005 Жалоба Опубликовано 27 октября, 2005 все зависит от того, как читать из файла. если это чистые винапи функции ввода/вывода, то на им на последовательности перевода каретки действительно плевать, но чистый апи - ИМХО неудобно. а вот если использовать, скажем объект на основе класса CStdioFile из MFC, то 0D0A считать в виде последовательности байтов не получится, зато есть функция чтения строки целиком К чему это я: винда файлы не делит на те или иные, их делит программист в зависимости от потребностей. Цитата
uliss Опубликовано 28 октября, 2005 Автор Жалоба Опубликовано 28 октября, 2005 Спасибо! К сожалению, ( или к счастью) с WinAPI и MFC не знаком. Не подскажете, а что с "чистым" C и C++? В тоже время, во всех манах пишется, что флаг "b" предназначен для работы в системе Windows c бинарными файлами. (Пример - на php.net/fopen, C/C++ Programmers Reference by Herbert Schildt). Что может произойти если окрывать файлы в "неправильном" режиме? Цитата
Aceler Опубликовано 30 октября, 2005 Жалоба Опубликовано 30 октября, 2005 По идее, при доступе к текстовым файлам в буфер попадают данные построчно, при двоичном - побайтно. И, соответственно, при записи в бинарном режиме - каждый байт последовательно, при текстовом - построчно. Это означает, чо при попытке записать в текстовом режиме бинарный файл, вы получите \n\t после каждого байта. Цитата
Byte Опубликовано 31 октября, 2005 Жалоба Опубликовано 31 октября, 2005 да все зависит от языка и приемов программирования. если это язык высокого уровня, инкапсулирующий низкоуровневые АПИ ф-ции - один подход; "чистый" С - другой, при этом приходится использовать "голый" винапи если это не простейшее консольное приложение. винда - ОС основанная на объектно ориентированном подходе, посему, хотя и можно программить на С, С++ роднее для винды Цитата
uliss Опубликовано 1 ноября, 2005 Автор Жалоба Опубликовано 1 ноября, 2005 Спасибо всем! А как Вам такая формулировка? 1. Текстовые файлы - подмножество бинарных. 2. Программисту в Windows (использующему C*, Perl и др.) нужно различать эти файлы из-за режимов открытия - в Unix нет. Цитата
EL[michlen] Опубликовано 2 ноября, 2005 Жалоба Опубликовано 2 ноября, 2005 Ну почему... в Unix можно использовать функции open (read, write...) а можно fopen (...). То же справедливо и для Windows. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.