Мне не удалось решить эту проблему, даже используя debug50. Я знаю, что цикл выполняется некоторое время, пока в конце концов он не достигнет ошибки в заголовкеПрограмма останавливается там, где я пытаюсь записать изображение в файл (сразу после последнего условия).
Никакая другая проблема из CS50 не заставила меня так сильно удивляться, что мне пришлось публиковать здесь. Любая помощь будет оценена.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "bmp.h"
int main(int argc, char *argv[])
{
// ensure proper usage
if (argc != 2)
{
printf("Usage: ./recover image\n");
return 1;
}
// remember filenames
char *infile = argv[1];
// open input file
FILE *inptr = fopen(infile, "r");
if (inptr == NULL)
{
printf("Could not open %s.\n", infile);
return 2;
}
BYTE space[512];
char filename[8];
FILE *outptr = NULL;
int imgCount = 0;
bool search = true;
while(search == true)
{
size_t read = fread(space, sizeof(BYTE), 512, inptr);
if (feof(inptr))
{
search = false;
}
if (space[0] == 0xff && space[1] == 0xd8 && space[2] == 0xff && (space[3] & 0xf0) == 0xe0)
{
if (outptr != NULL)
{
fclose(outptr);
imgCount++;
}
else
{
outptr = fopen(filename, "w");
sprintf(filename, "%03i.jpg", imgCount);
}
}
if (outptr != NULL)
{
fwrite(space, sizeof(BYTE), read, outptr);
}
}
// close outfile
fclose(outptr);
// close infile
fclose(inptr);
// success
return 0;
}
Спасибо.