singlepost

Текстовые и бинарные файлы. << На главную или назад  

Пытаюсь самостоятельно освоить С++... Дошла до файлов.Объясните, пожалуйста, понятным языком, в чем принципиальное отличие текстового от бинарного? И что будет, если я открою, например, файл .txt в текстовом режиме и начну туда записывать данные и соответственно наоборот?

4 ответов в теме “Текстовые и бинарные файлы.”

  1. 1
    Виктор Александров ответил:

    Да ничего не будет сверхъестественного )

    Текстовые и бинарные файлы – это абстракция для программиста исключительно, в текстовом режиме библиотека производит некоторые дополнительные преобразования во время чтения и записи, к примеру чтение строк в Unix или Windows формате подразумевает CRLF в конце строки в винде, и только CR в Unix ) С точки зрения программиста и текстового файла это одно и то же.

    Если открыть бинарный файл и писать текст, то он на другой системе может криво считаться, если открыть текстовый файл и писать данные, то они могут криво записаться из-за дополнительных преобразований.

  2. 2
    Руслан Шамюнов ответил:

    В текстовом файле в отличие от бинарного могут присутствовать только отображаемые символы и некоторые невидимые в текстовом редакторе управляющие символы. Откройте текстовый файл в шестнадцатеричном редакторе.
    -Новая строка обозначается в текстовых файлах в Винде с помощью двух байт возврат каретки =0xD,перевод строки =0xA. (В Си обозначаются как \r\n)
    - Табуляция 0×9
    При чтении текста из файла, открытого как текстовый, эти символы будут игнорироваться или заменяться.
    Если открыть текстовый файл, как бинарный, то придется самому учитывать наличие управляющих символов .
    Если открыть бинарный файл как текстовый, то будут некорректно работать функции для работы с текстовыми файлами.

  3. 3
    Денис Лисов ответил:

    Бинарный файл как текстовый открывать очень не рекомендуется – данные могут быть безнадежно испорчены. Что же касается открытия текстового файла как бинарного, то может испортиться форматирование.

  4. 4
    Константин Смотритель ответил:

    http://www.google.ru/search?hl=ru&q=fopen&bt…=
    третья сверху. Про что такое "возврат каретки" ("ВК") и "Перевод строки" ("ПС") см. на том же сайте. Хотя выше Руслан уже нписал, что это (хотя и ошибся с табуляцией – с ней ничего такого не происходит).

    Есть вопрос зачем это сделано? Читаем cplusplus.com, идём по ссылке Reference, длее C library – там нет деталей, зато есть объяснение.

    И вообще, если у тебя *кс, то никаких преобразований не производится. Фича была сделана как раз для совместимости Винды с *кс.

    (SIC! Обращаю внимание, что ссылку необходимо скопировать!)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.