当我尝试使用EA iffw.c 库编写 IFF 文件时,我无法通过 StartWGroup() 调用。它在 IFFWriteBytes() 中失败,因为 context->ckHdr.ckSize 为零。在 IFFWriteBytes() 中有一个 if() 检查 (size) != szNotYetKnown。(szNotYetKnown 是一个常数。)该示例似乎表明它应该可以工作,但我看不出如何。IFFWriteBytes() 返回 CLIENT_ERROR,因为 nBytes 为 4 - 我正在尝试保存 32 位整数。
我失败的代码:
outfp = fopen(outfile, "wb");
ifferr = OpenWIFF(outfp, &filec, szNotYetKnown);
if (ifferr) {
return 2;
}
ifferr = StartWGroup(&filec, LIST, sizeof (ID_NATAMI_FLASH), ID_NATAMI_FLASH, &listc);
if (ifferr) {
printf("ifferr: %d\n", ifferr);
return 3;
}
最后一个失败,StartWGroup()。
IFF 就像 XML 一样简单,我可以在没有库的情况下生成它,但是使用曾经常见且经过良好测试的库会很好。
问题与 Amiga 无关,但这种文件格式在 Amiga 上很流行。顺便问一下,您知道DjVU、RMFF、AIFF、RIFF 和许多其他格式是 IFF 还是细微的变化?
更新: 易于阅读的 IFF 说明。