Я пытаюсь восстановить файл jpg на карте памяти. 49 из 50 отображают, как ожидается, но последний отображает недопустимый или неподдерживаемый формат файла, а также отображается сообщение об ошибке «Превышен предел размера файла». может кто-то любезно сказать мне, почему это так. код ниже
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[])
{
if (argc != 2)
{
fprintf(stderr, "Usage: ./recover image\n");
return (1);
}
FILE * fileptr = fopen(argv[1], "r");
if (fileptr == NULL) {
fprintf(stderr, "Could not open image file\n");
return (2);
}
unsigned char array[512] = {0};
int value = 0;
char filename[8] = "";
do {
value = fread(array, sizeof(array), 1, fileptr);
} while (!(array[0] == 0xff && array[1] == 0xd8 && array[2] == 0xff &&
(array[3] & 0xf0) == 0xe0));
int count = 0;
sprintf(filename, "%03i.jpg", count);
FILE * img = fopen(filename, "w");
while (value == 1) {
do {
fwrite(array, sizeof(array), 1, img);
value = fread(array, sizeof(array), 1, fileptr);
} while (!(array[0] == 0xff && array[1] == 0xd8 && array[2] ==
0xff && (array[3] & 0xf0) == 0xe0));
count = count + 1;
fclose(img);
sprintf(filename, "%03i.jpg", count);
img = fopen(filename, "w");
}
fclose(img);
fclose(fileptr);
return 0;
}