Я пытаюсь выяснить тип файла, не используя внешние библиотеки или команду «файл».Определение типа файла в C
Я просмотрел несколько сообщений и потоков, и они указывают на использование функции stat() (unix man stat) и игры с «st_mode» из stat struct.
Но я не знаю, как это сделать, и я не могу найти хороший пример этого.
Например, программа принимает файл F, я хочу иметь возможность читать F, аналогичную программе ниже, и давать аналогичный результат. И filetype F является PDF, но на нем нет расширения.
ДАЛЬНЕЙШИЙ ПРИМЕР: Если у меня есть foo.pdf, но я изменил расширение на * .png (foo.png), я могу передать свою программу «foo.png» и сказать, что это infact .pdf-файл.
Когда файл будет создан, он делает «магическое число», например, с помощью PDF, магическое число PDF файлов начинаются с «% PDF» (шестнадцатеричный 25 50 44 46).»
Как может Я использую магическое число, чтобы выяснить тип файла.
Я понимаю, какой тип таблицы должны быть сделаны в моем конце, чтобы поддержать файлы. И я только делаю небольшую горсть < 10.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void errorInput()
{
fprintf(stderr, "\nYou have received this message due to an error. \n");
fprintf(stderr, "Please type 'filetype <file>' to properly execute the program.\n");
fprintf(stderr, "Thank you and have a fine day! \n\n");
exit(0);
}
int main(int argc, char *argv[])
{
char command[128];
if (argc == 2)
{
strcpy(command, "file ");
strcat(command, argv[1]);
system(command);
}
else
{
errorInput();
}
return 0;
}
Заранее благодарен!
* "Я пытаюсь выяснить тип файла файла »* Что именно вы имеете в виду« тип файла »? Вы пытаетесь определить, является ли это, например, файл PDF в сравнении с EXE или BMP? Нет простого способа сделать это. Вы должны использовать базу данных для идентификации функций, например. 'libmagic', который используется' file'. Не пытайтесь изобрести колесо здесь. –
Использует ли «без использования внешних библиотек» собственный список '' '' '' '' '' '' '' '' '' '' '' '' '' '' файл '' Затем вы должны найти спецификации файлов для всех типов, которые вы хотите распознать, и выполнить проверку самостоятельно. Это даже не очень сложно или что-то еще ... просто целая работа. – usr2564301
«Вы пытаетесь определить, есть ли это файл PDF в сравнении с EXE или BMP?» Да, именно это. – user3247187