Входы для записи массива символов EBCDIC

Если у меня есть массив символов в формате EBCDIC, и я хочу сохранить этот массив в файл. Я думаю об использовании fputs вывести массив символов без предварительного преобразования его в другой формат.

Вопрос) Является ли использование fputs законно для написания EBCDIC? Если нет, я должен преобразовать строку в ASCII перед выводом?

Я ищу в Интернете, но не могу найти, что сказать fputs не должен использоваться для вывода данных EBCDIC.

2 ответа

Решение

Если ваш массив символов в формате EBCDIC является строкой в ​​стиле c, то он заканчивается на \0 байт, то проблем нет.

fputs()в двоичном режиме не зависит от формата, кроме \0,

Предполагая, что ваша программа написана с использованием набора символов ASCII, важно, чтобы ваш выходной файл был открыт в двоичном режиме (например, "wb"), иначе \n C не будет совпадать с EBCDIC, и возможны некоторые переводы.

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


Если ваш "массив символов в формате EBCDIC" не заканчивается \0 или врезали \0 байты, предлагаю вам простое использование fwrite(), Снова убедитесь, что используете в двоичном режиме, если ваша система не является EBCDIC.

Что ж, fputs принимает строку C, которая использует кодировку ASCII. Так что это не сработает. Я думаю, вам нужно написать файл, используя функцию более низкого уровня. Возможно использовать fwrite написать файл напрямую, без использования строк. Вот справочная страница по fwrite.

Другие вопросы по тегам