Тема: Відновлення jpg файлів з бінарного файлу
Треба відновити фото, що містяться у .raw копії флешки. Відомо, що там jpg файли. Тому я написав програму, що зчитує файл до буферу, а тоді з буфера повинна послідовно(відповідно до початку і кінця jpg файлу) записати n jpg файлів. При запуску створюється один jpg файл дуже великого розміру, до кінця виконання програми я не чекаю бо вже бачу, що щось не так. Підкажіть де помилка.
[code=C]
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
FILE *fileptr;
unsigned char *buffer;
long filelen;
int jpgcount = 0;
fileptr = fopen("card.raw", "r"); // Open the file in binary mode
fseek(fileptr, 0, SEEK_END); // Jump to the end of the file
filelen = ftell(fileptr); // Get the current byte offset in the file
rewind(fileptr); // Jump back to the beginning of the file
buffer = (unsigned char *)malloc((filelen+1)*sizeof(unsigned char)); // Enough memory for file + \0
fread(buffer, filelen, 1, fileptr); // Read in the entire file
fclose(fileptr); // Close the file
//printf("%li\n", filelen);
for(int i = 0; i < filelen; i++)
{
if(buffer[i] == 0xff && buffer[i+1] == 0xd8)
{
char filename[100];
sprintf(filename, "%03d.jpg", jpgcount);
FILE* outptr = fopen(filename, "wb");
jpgcount++;
do
{
fwrite(&buffer[i], 1, 1, outptr);
}while((buffer[i] != 0xff && buffer[i+1] != 0xd9) || buffer[i] != '\0');
fclose(outptr);
}
}
free(buffer);
return 0;
}[/code]