.raw ファイルを反復処理して、jpeg が開始していることを示す 4 バイト (0xffd8ffe0 または 0xffd8ffe1) を探しています。
int junk = fgetc(inptr);
while (junk != 0xff)
if (junk == EOF)
{
printf("Reached end of file.\n");
printf("2\n");
return 2;
}
else
{
junk = fgetc(inptr);
}
0xff を見つけたら、fseek(inptr, -1, SEEK_CUR) を実行し、次のようにします。
while (feof(inptr) == 0)
{
// declared write file outptr
// write header
char header[4];
do
{
fread(&header, sizeof(char), 4, inptr);
if (header[1-4] are 0xffd8ffe0 or 0xffd8ffe1)
fwrite(&header, 1, 4, outptr);
} while (header[1-4] are not 0xffd8ffe0 or 0xffd8ffe1);
GDB を使用していて、while ループが始まる前に fgetc(inptr) を 4 回出力すると、確かに 0xffd8ffe0 が返されます。do-while ループでヘッダーに書き込み、gdb でヘッダーを出力すると、おかしなジャンク値が得られ、do-while が無限ループになります。何が起こっているのかわかりません。ありがとう。