8

EA iffw.c ライブラリを使用して IFF ファイルを書き込もうとすると、StartWGroup() 呼び出しを通過できません。context->ckHdr.ckSize がゼロであるため、IFFWriteBytes() で失敗します。IFFWriteBytes() の内部には、(サイズ) != szNotYetKnown をチェックする if() があります。(szNotYetKnown は定数です。) このは、それが機能することを示しているようですが、方法がわかりません。nBytes が 4 であるため、IFFWriteBytes() は CLIENT_ERROR を返します。32 ビットの int を保存しようとしています。

私の失敗したコード:

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 で人気がありました。ところで、DjVURMFFAIFF 、 RIFF など、多くの形式が IFF か、わずかに異なる形式であることをご存知でしたか?

更新: 読みやすい IFF の説明

4

1 に答える 1