Пытаюсь самостоятельно освоить С++… Дошла до файлов.Объясните, пожалуйста, понятным языком, в чем принципиальное отличие текстового от бинарного? И что будет, если я открою, например, файл .txt в текстовом режиме и начну туда записывать данные и соответственно наоборот?
9 мая 2009 в 17:03
//www.google.ru/search?hl=ru&q=fopen&bt…=
третья сверху. Про что такое "возврат каретки" ("ВК") и "Перевод строки" ("ПС") см. на том же сайте. Хотя выше Руслан уже нписал, что это (хотя и ошибся с табуляцией – с ней ничего такого не происходит).
Есть вопрос зачем это сделано? Читаем cplusplus.com, идём по ссылке Reference, длее C library – там нет деталей, зато есть объяснение.
И вообще, если у тебя *кс, то никаких преобразований не производится. Фича была сделана как раз для совместимости Винды с *кс.
(SIC! Обращаю внимание, что ссылку необходимо скопировать!)
9 мая 2009 в 16:05
Бинарный файл как текстовый открывать очень не рекомендуется – данные могут быть безнадежно испорчены. Что же касается открытия текстового файла как бинарного, то может испортиться форматирование.
9 мая 2009 в 15:02
В текстовом файле в отличие от бинарного могут присутствовать только отображаемые символы и некоторые невидимые в текстовом редакторе управляющие символы. Откройте текстовый файл в шестнадцатеричном редакторе.
-Новая строка обозначается в текстовых файлах в Винде с помощью двух байт возврат каретки =0xD,перевод строки =0xA. (В Си обозначаются как \r\n)
- Табуляция 0×9
При чтении текста из файла, открытого как текстовый, эти символы будут игнорироваться или заменяться.
Если открыть текстовый файл, как бинарный, то придется самому учитывать наличие управляющих символов .
Если открыть бинарный файл как текстовый, то будут некорректно работать функции для работы с текстовыми файлами.
9 мая 2009 в 15:01
Да ничего не будет сверхъестественного )
Текстовые и бинарные файлы – это абстракция для программиста исключительно, в текстовом режиме библиотека производит некоторые дополнительные преобразования во время чтения и записи, к примеру чтение строк в Unix или Windows формате подразумевает CRLF в конце строки в винде, и только CR в Unix ) С точки зрения программиста и текстового файла это одно и то же.
Если открыть бинарный файл и писать текст, то он на другой системе может криво считаться, если открыть текстовый файл и писать данные, то они могут криво записаться из-за дополнительных преобразований.