0
問題是從.raw文件中恢復一些JPG文件。我恢復的IMG在恢復CS50中與原始版本不匹配
當我運行check50我得到「恢復IMG不匹配」。
:)
recover.c存在。
:)
recover.c編譯。
:)
處理缺乏法醫圖像的
:(
復甦000.jpg正確– 恢復的形象不符
:(
恢復圖像居中正確– 恢復的形象不符
:(
復甦015.jpg正確– 015.jpg找不到
我真的很努力地找出問題所在,每次我找不到問題出在哪裏,我希望有人可以和gi給我一個和平的建議。
#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[]){
if(argc != 2){
fprintf(stderr, "Usage: ./recover image");
return 1;
}
//open file
FILE *inptr = fopen(argv[1], "r");
if (inptr == NULL){
fprintf(stderr, "Could not open %s.\n", argv[1]);
return 2;
}
int foundjpg = 0;
char filename[10];
int x=1;
//repeat until end of the card
while(x == 1){
//buffer
unsigned char buf[512];
x = fread(buf, 512, 1, inptr);
//read into buffer
fread(buf, 512, 1, inptr);
FILE *jpg = fopen(filename, "w");
//start of a new jpg?
if(buf[0]== 0xff && buf[1] == 0xd8 && buf[2] == 0xff && (buf[3] & 0xf0) == 0xe0){
if(jpg != NULL){// yes i found before
fclose(jpg);
sprintf(filename, "%03i.jpg" ,foundjpg);
foundjpg++;
jpg = fopen(filename, "w");
}
else{
sprintf(filename, "%03i.jpg" ,foundjpg);
jpg = fopen(filename , "w");
foundjpg++;
}
}
//already found a jpg?
if(jpg != NULL && foundjpg > 0){
fwrite(buf, 1, 512, jpg);
}
}
fclose(inptr);
// success
return 0;
}
在[cs50.se]的堆棧交換網絡上有一個指定的站點。 – StoryTeller