Лишний символ 0x0D
От: amantz  
Дата: 10.08.06 14:25
Оценка:
Здравствуйте!

У меня следующая проблема.

Стоит задача: попарно переставить байты в файле. Очень просто! но...

Я считываю символ из файла c помощью getc, и потом записываю в новый файл через putc. Но, если таковым символом является 0х0D (возможно, даже без 0х0А), то 0х0D у меня записывается дважды.

Есть ли стандартный способ избежания этой неприятности?

Заранее благодарен!
Re: Лишний символ 0x0D
От: Какая разница Украина  
Дата: 10.08.06 14:49
Оценка: :)
Здравствуйте, amantz, Вы писали:

A>Здравствуйте!


A>У меня следующая проблема.


A>Стоит задача: попарно переставить байты в файле. Очень просто! но...


A>Я считываю символ из файла c помощью getc, и потом записываю в новый файл через putc. Но, если таковым символом является 0х0D (возможно, даже без 0х0А), то 0х0D у меня записывается дважды.


A>Есть ли стандартный способ избежания этой неприятности?


A>Заранее благодарен!


А если открыть файл как бинарный
Узнать его длину
Зарезервировать буфер под этот размер
прочитать файл в буфер
переставить соседние байты
записать буфер в выходной файл
закрыть файлы
!0xDEAD
Re[2]: Лишний символ 0x0D
От: amantz  
Дата: 10.08.06 17:52
Оценка:
Здравствуйте, Какая разница, Вы писали:

КР>Здравствуйте, amantz, Вы писали:


A>>Здравствуйте!


A>>У меня следующая проблема.


A>>Стоит задача: попарно переставить байты в файле. Очень просто! но...


A>>Я считываю символ из файла c помощью getc, и потом записываю в новый файл через putc. Но, если таковым символом является 0х0D (возможно, даже без 0х0А), то 0х0D у меня записывается дважды.


A>>Есть ли стандартный способ избежания этой неприятности?


A>>Заранее благодарен!


КР>А если открыть файл как бинарный

КР>Узнать его длину
КР>Зарезервировать буфер под этот размер
КР>прочитать файл в буфер
КР>переставить соседние байты
КР>записать буфер в выходной файл
КР>закрыть файлы
--------
Спасибо за помощь!

Я, в общем-то, и делаю через буфер... разве что не открываю исходный файл в бинарном режиме...
Но я наконец понял вот что: дело именно в 0x0A, т.е. когда я записываю из буфера символ 0х0А, перед ним всегда записывается 0х0D... буду в бинарном пробовать.
Re[3]: Лишний символ 0x0D
От: Кодёнок  
Дата: 11.08.06 09:48
Оценка:
Здравствуйте, amantz, Вы писали:

A>Я, в общем-то, и делаю через буфер... разве что не открываю исходный файл в бинарном режиме...

A>Но я наконец понял вот что: дело именно в 0x0A, т.е. когда я записываю из буфера символ 0х0А, перед ним всегда записывается 0х0D... буду в бинарном пробовать.

Рекомендую забыть о текстовом режиме и паре CRLF как о страшном сне, если только специфика проекта не заставляет. Всегда бинарный режим и всегда только 0x0A.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.