Итак, я пробую упражнение CS50 Recover (где вам нужно искать файлы jpg на карте памяти, и всякий раз, когда вы их найдете, вы открываете новый файл и записываете найденный jpg в новый файл). Мой код компилируется, но когда я запускаю команду check50, я получаю следующие ошибки:
:( recovers 000.jpg correctly
recovered image does not match
:( recovers middle images correctly
recovered image does not match
:( recovers 049.jpg correctly
recovered image does not match
Может ли кто-нибудь помочь мне понять, что я делаю не так? Это мой код:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// Checking if the user entered a correct input:
if (argc!=2)
{
printf("You're not using it correctly!\n");
return 1;
}
// Opening the file in argv[1]
FILE *f=fopen(argv[1], "r");
// Validating that there's a file in argv[1]
if(f==NULL)
{
printf("File hasn't found\n");
return 1;
}
unsigned char bytes[512];
int counter=0;
FILE *img= NULL;
while (fread(bytes, 512, 1, f)==1)
{
if (bytes[0]==0xff && bytes[1]==0xd8 && bytes[2]==0xff && (bytes[3]&0xf0)==0xe0)
{
// If it's the first jpg found:
if (counter==0)
{
img=fopen("000.jpg", "w");
}
else
{
fclose(img);
char filename[8];
sprintf(filename,"%03i.jpg", counter);
img= fopen(filename, "w");
if (img==NULL)
{
printf("Couldn't open file\n");
return 1;
}
}
counter++;
fwrite(bytes, 512, 1, img);
}
}
fclose(img);
fclose(f);
}
b
в строки режима дляfopen()
, напримерrb
иwb
. - person MikeCAT   schedule 24.08.2020