Advertisement
Guest User

Untitled

a guest
Aug 8th, 2019
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <cs50.h>
  5.  
  6. #include "bmp.h"
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10. // ensure proper usage
  11. if (argc != 2)
  12. {
  13. fprintf(stderr, "Usage: ./recover filename\n");
  14. return 1;
  15. }
  16.  
  17. // assigns file name to variable (should be null if not card.raw)
  18. char *infile = argv[1];
  19.  
  20. // opens card file with variable name
  21. FILE *inptr = fopen(infile, "r");
  22. if (!inptr)
  23. {
  24. fprintf(stderr, "Could not open %s.\n", infile);
  25. return 1;
  26. }
  27.  
  28. bool found_first_jpg = false;
  29. int n = 0;
  30. BYTE buffer[512];
  31. FILE *new_jpg_ptr;
  32.  
  33.  
  34. while (fread(buffer, 512, 1, inptr) != 0x00)
  35. {
  36. if (buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
  37. {
  38. char filename[8];
  39. if (found_first_jpg == false)
  40. {
  41. found_first_jpg = true;
  42. sprintf(filename, "%03i.jpg", n++);
  43. new_jpg_ptr = fopen(filename, "w");
  44. if (new_jpg_ptr == NULL)
  45. {
  46. return 1;
  47. }
  48. fwrite(buffer, 512, 1, new_jpg_ptr);
  49. }
  50. else
  51. {
  52. fclose(new_jpg_ptr);
  53. sprintf(filename, "%03i.jpg", n++);
  54. new_jpg_ptr = fopen(filename, "w");
  55. if (new_jpg_ptr == NULL)
  56. {
  57. return 1;
  58. }
  59. fwrite(buffer, 512, 1, new_jpg_ptr);
  60. }
  61. }
  62. else
  63. {
  64. if (found_first_jpg)
  65. {
  66. fwrite(buffer, 512, 1, new_jpg_ptr);
  67. }
  68. }
  69. }
  70.  
  71. fclose(new_jpg_ptr);
  72. fclose(inptr);
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement