我正在将一些生成二进制文件的旧C代码移到我们的C#系统中。问题是,生成的二进制文件仍将需要由另一个旧的C程序读取。
原始代码将多个结构输出到二进制文件,其中许多结构包含带有* next指针的链表。
我该如何用C#编写这些代码,以便原始程序仍然能够读取它们?
旧的C代码一次读取和写入整个结构的文件,具有freads和fwrites即
fread ( &file, sizeof ( struct file_items ), 1, hdata.fp );
我找不到关于fwrite如何输出指针等的大量信息。
最佳答案
如果旧代码正在编写指向文件的指针,那么您处理的是编写得很差的代码。这些指针对读取该文件的任何其他进程毫无意义。
同样,用单个fread()读取整个结构也是一个坏主意,因为不同的编译器可能会不同地填充这些结构(因此,一个应用程序编写的结构的布局可能不同于另一应用程序所读取的结构)。