>>>>> Anton Stratonnikov <bil...@yandex.ru> writes:
>>>>> 19.03.2015 21:52, Ivan Shmakov пишет:

 >>>> Нужна смотрелка для двоичных файлов.  Чтобы пользователь мог
 >>>> задать (в граф. интерфейсе или в файле), мол первые 4 байта это
 >>>> ASCII текст, название поля — «имя», потом 2 байта это целое число,
 >>>> порядок байтов сетевой, название поля — возраст и т. д. и чтобы
 >>>> потом подсунуть этой утилите любой файл и она красиво вывела

[…]

 >> Во-вторых, для чтения чисел в машинном представлении в общем случае
 >> потребуется что-то вроде htons () и подобных, которые объявлены в
 >> netinet/in.h.  (Предполагая little-endian; IOW, «это не то решение,
 >> которое вы ищете.»)

        С другой стороны, учитывая явное упоминание «сетевого порядка»
        выше, — может быть уместно.

 > Не соглашусь.  Тот же fgets читает нужное количество байт в указанное
 > место в памяти,

        fread ().  Поскольку fgets () остановится на первом же байте со
        значением 10 (= \n.)  Что еще хуже, fgets () не возвращает
        количество считанных из потока байт.

 > которое позднее можно прочитать как нужный тип данных.

        В общем случае, это не так просто.  Например, если речь идет о
        числах «произвольной» разрядности — по типу DER/BER или MIDI.

[…]

-- 
FSF associate member #7257  http://boycottsystemd.org/  … 3013 B6A0 230E 334A

Ответить