Я застрял в этом коде некоторое время, и я, наконец, могу сгенерировать все изображения, но изображения пиксельные и некорректные. Я видел в Интернете, почему это может произойти, и изменил свой код, но это мне совсем не помогает.
Я получаю следующие сообщения от check50
:) recovery. c существует.
:) восстановление. c компилируется.
:) обрабатывает отсутствие forensi c изображение
:( восстанавливает 000.jpg правильно восстановленное изображение не соответствует
:( восстанавливает средние изображения правильно восстановленное изображение не соответствует
:( восстанавливает 049.jpg правильно восстановленное изображение не соответствует
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//#include <stdint.h>
typedef unsigned char BYTE;
int main(int argc, char *argv[])
{
if (argc!=2)
{
printf("Usage: ./recover image");
return 1;
}
FILE *file = fopen(argv[1],"r");
if(file ==NULL)
{
printf("cannot be opened");
return 1;
}
//for ( ) //here we read till it reaches end of file i.e able to read 512 bytes and not less
BYTE bytes[512]; // defining buffer
char filename[8];
int count = -1;
FILE *img = NULL;
//bool flag = false;
bool new_file = false;
while ((fread(bytes,512,1,file))==1)
{
if((bytes[0] == 0xff) &&(bytes[1] == 0xd8) && (bytes[2] == 0xff) && ((bytes[3] & 0xf0) == 0xe0))
{
new_file = true;
count++;
sprintf(filename,"%03i.jpg",count);
img = fopen(filename,"w");
fwrite(bytes,512,1,img);
fclose(img);
if (new_file == false)
{
img = fopen(filename,"a");
fwrite(bytes,512,1,img);
fclose(img);
}
}
}
fclose(file);
//fclose(img);
return 0;
}
Пожалуйста, предложите ошибки или изменения в код