my program compiles successfully but it doesn't seem to produce any images at all. I tried using debug50 and it seems like the if condition for buffer[0] through to buffer[3] isn't fulfilled, or the buffer array isn't containing the card.raw data. I am unsure about the exact problem or how to solve it, some help would be much appreciated :)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
typedef uint8_t BYTE;
int main(int argc, char *argv[])
{
if (argc == 2)
{
if (strcmp(argv[1], "card.raw") != 0)
{
printf("Usage: ./recover image\n");
return 1;
}
char* get_file = argv[1];
FILE *file = fopen(get_file, "r");
char filename[7];
int i = 0;
unsigned char buffer[512] = {0};
char ch;
while ((ch = fgetc(file)) != EOF)
{
fread(buffer, sizeof(BYTE), 1, file);
if (buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
{
if (i == 0)
{
sprintf(filename, "%03i.jpg", i);
FILE *img = fopen(filename, "w");
fwrite(buffer, sizeof(BYTE), 1, img);
fclose(img);
i++;
}
else
{
sprintf(filename, "%03i.jpg", i);
FILE *img = fopen(filename, "w");
fwrite(buffer, sizeof(BYTE), 1, img);
fclose(img);
i++;
}
}
else if (i != 0)
{
FILE *img = fopen(filename, "a");
fwrite(buffer, sizeof(BYTE), 1, img);
fclose(img);
}
}
}
else
{
return 1;
}
return 0;
}