Я хочу получить Magic Number из двоичного файла. Например, файлы JPG содержат FFD8 для магического числа в первых байтах. Как я могу это прочитать? Я хочу написать программу, которая проверяет, отвечает ли расширение файла на магическое число, и если оно не переименовывает файл.
Я думаю, так и должно быть, но это не работает. Он всегда печатает разные значения. Я хочу, чтобы он дал мне магический номер, если файл JPG, то - FFD8.
int main()
{
FILE *f;
char fName[80];
char *array;
long fSize;
printf("Input file name\n");
scanf("%s", fName);
if((f=fopen(fName, "rb"))==NULL)
{
fprintf(stderr, "Error\n");
exit(1);
}
fseek (f , 0 , SEEK_END);
fSize = ftell (f);
rewind (f);
array=(char *)malloc(fSize+1);
fread(array, sizeof(char), 4, f);
printf("%x", array);
free(array);
}
fstat()
? - person EOF   schedule 26.04.2014fstat()
находится не в стандарте C, а в POSIX, хотя я почти уверен, что есть эквиваленты в других семействах ОС. Чтобы использоватьfstat()
, вы создаетеstruct stat x
, а затем вызываетеf-/l-/stat()
для файла-дескриптора / -name иx
. Тогда вы посмотрите наx.st_size
. - person EOF   schedule 26.04.2014