Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <cs50.h>
- #include "bmp.h"
- int main(int argc, char *argv[])
- {
- // ensure proper usage
- if (argc != 2)
- {
- fprintf(stderr, "Usage: ./recover filename\n");
- return 1;
- }
- // assigns file name to variable (should be null if not card.raw)
- char *infile = argv[1];
- // opens card file with variable name
- FILE *inptr = fopen(infile, "r");
- if (!inptr)
- {
- fprintf(stderr, "Could not open %s.\n", infile);
- return 1;
- }
- bool found_first_jpg = false;
- int n = 0;
- BYTE buffer[512];
- FILE *new_jpg_ptr;
- while (fread(buffer, 512, 1, inptr) != 0x00)
- {
- if (buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
- {
- char filename[8];
- if (found_first_jpg == false)
- {
- found_first_jpg = true;
- sprintf(filename, "%03i.jpg", n++);
- new_jpg_ptr = fopen(filename, "w");
- if (new_jpg_ptr == NULL)
- {
- return 1;
- }
- fwrite(buffer, 512, 1, new_jpg_ptr);
- }
- else
- {
- fclose(new_jpg_ptr);
- sprintf(filename, "%03i.jpg", n++);
- new_jpg_ptr = fopen(filename, "w");
- if (new_jpg_ptr == NULL)
- {
- return 1;
- }
- fwrite(buffer, 512, 1, new_jpg_ptr);
- }
- }
- else
- {
- if (found_first_jpg)
- {
- fwrite(buffer, 512, 1, new_jpg_ptr);
- }
- }
- }
- fclose(new_jpg_ptr);
- fclose(inptr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement