你好,新年快乐,
我必须在我的C程序中接受juste txt文件,
我对如何制作它没有任何想法......任何想法?
我不知道文本文件是否包含Header或表征它的东西..
PS:我正在使用Ubuntu,因此看不到文件扩展名。
谢谢
答案 0 :(得分:0)
在Linux环境中,我个人会使用libmagic
,这是实用程序file
的核心。此库的目的是完成您要完成的任务:根据文件内容识别文件类型。
示例用法如下所示。
/* identify.c */
#define _POSIX_SOURCE /* required for fileno() */
#include <magic.h>
#include <stdlib.h>
#include <stdio.h>
int main(void) {
const char *description;
magic_t cookie;
FILE *fp;
fp = fopen("example.txt", "r");
if(fp == NULL) {
fprintf(stderr, "error: cannot open file\n");
exit(EXIT_FAILURE);
}
cookie = magic_open(MAGIC_NONE);
if(cookie == NULL) {
fprintf(stderr, "error: cannot initialize library\n");
fclose(fp);
exit(EXIT_FAILURE);
}
if( magic_load(cookie, NULL) != 0 ) {
fprintf(stderr, "error: cannot load database : %s\n",
magic_error(cookie));
magic_close(cookie);
fclose(fp);
exit(EXIT_FAILURE);
}
description = magic_descriptor(cookie, fileno(fp));
printf("%s\n", description);
magic_close(cookie);
fclose(fp);
return EXIT_SUCCESS;
}
将此源文件命名为identify.c
,在同一目录中创建包含某些内容的文本文件名example.txt
,并使用以下命令编译:
gcc -Wall -std = c99 -pedantic -lmagic -o identify identify.c
然后运行它。
./鉴定
你得到这样的印刷品:
UTF-8 Unicode text
这个库可以用几种不同的方式使用,所以你应该看一下man page。例如,您可以获取MIME类型而不是上面的描述。
libmagic所属的file
软件包可能已安装在您的计算机上。但是,如果您使用的是诸如CentOS的RHEL之类的发行版将开发标题拆分为单独的包,请确保已安装file-devel
。