我已经在此代码上停留了一段时间,现在终于可以生成所有图像了,但是这些图像是像素化的,而且是不正确的。我在网上看到了为什么会发生这种情况并更改了我的代码,但这根本无济于事。
我收到来自check50的以下消息
:) recovery.c存在。
:) recovery.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;
}
请提出错误或代码更改