I've checked and reread my code a million times but I can't understand why I'm always getting a segmentation fault. I don't even know where the segmentation fault is. Any help is greatly appreciated!
int main(int argc, char* argv[])
{
if (argc != 2)
{
fprintf(stderr,"Usage: ./recover image.\n");
return 1;
}
char* inname = argv[1];
FILE *file = fopen(inname, "r");
if (file == NULL)
{
fprintf(stderr, "The forensic image cannot be opened for reading.\n");
return 2;
}
unsigned char buffer[512];
int contador = 0;
char* filename = "";
FILE *outptr = NULL;
while (fread(buffer, 512, 1, file) == 1)
{
// check if its the start of a new jpeg file
if (buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
{
if (outptr == NULL)
{
sprintf(filename, "%03i.jpg", contador);
contador++;
outptr = fopen(filename, "w");
fwrite(buffer, 512, 1, outptr);
}
else // if a jpef was already open
{
// close the opened jpeg
fclose(outptr);
// open a new jpeg
sprintf(filename, "%03i.jpg", contador);
contador++;
outptr = fopen(filename, "w");
fwrite(buffer, 512, 1, outptr);
}
}
else
{
if (outptr != NULL)
{
fwrite(buffer, 512, 1, outptr);
}
}
}
fclose(file);
fclose(outptr);
return 0;
}