Эта цитата взята из CERT FIO09-C
Переносимость проблемы при использовании функций fread () и fwrite () в нескольких гетерогенных системах.В частности, никогда не гарантируется, что чтение или запись скалярных типов данных, таких как целые числа, не говоря уже о агрегатных типах, таких как массивы или структуры, сохранят представление или значение данных.Реализации могут отличаться заполнением структуры, моделью с плавающей запятой, числом бит на байт, порядком байтов и другими атрибутами, которые приводят к несовместимости форматов двоичных данных.
...
Чтение двоичных данныхформат которого отличается от ожидаемого, может привести к непредвиденному поведению программы.
CERT FIO09-C
Из книги Пирсона С, которую я читаю:
Хотя данные чтения и записи fread и fwrite, такие как целые числа, в формате фиксированного размера, а не в формате переменного размера, обрабатываемые ими данные обрабатываются в компьютерном формате «необработанных данных» (т. Е. Байты данных).), а не в удобочитаемом текстовом формате printf и scanf.Поскольку «необработанное» представление данных зависит от системы, «необработанные данные» могут быть недоступны для чтения в других системах, а также в программах, созданных другими компиляторами или с другими параметрами компилятора.
Для более переносимых представлений файлов рассмотритеиспользуя текстовые файлы или библиотеку функций, которые могут обрабатывать различия в представлениях двоичных файлов на разных платформах.
Я ищу в Интернете, но не могу найти библиотеки C, упомянутые в этой книге.Я пробовал много разных ключевых слов, но ничего не появляется.Не знаю, имел ли он в виду, что я должен написать свою собственную библиотеку, или там есть библиотеки.
Кто-нибудь знает какую-либо библиотеку C, которая может обрабатывать передачу двоичных данных по системам, таким как файлы, написанные с помощью fwrite?