检查文件中的文件是否为纯文本

时间:2014-05-13 12:56:05

标签: c linux file types

如果文件是文本文件,有没有办法检查Linux C,例如UTF还是ASCII?在bash中我们有函数file。 C中有任何等价物吗?

编辑:这是我在C中验证文本文件的功能。我使用popen,但它不能正常工作。有时我在pclose中有错误。在代码中需要编辑什么?

int check_file(char *path)
{
 FILE *file_type;
 char command[] = "/usr/bin/file";
 char command_to_execute[512];
 char check[512];
 int correct = 0;
 sprintf(command_to_execute,"%s %s",command,path);
 file_type = popen(command_to_execute,"r");
 if(file_type == NULL)
 {
   return correct;
 }
 fgets(check,512,file_type);
 char *pointer;
 pointer = strstr(check,"ASCII"); 
 if(pointer != NULL)
    correct = 1;
 pointer = strstr(check,"UTF");
 if(pointer != NULL)    
    correct = 1;          
 pclose(file_type);
 return correct;
}

2 个答案:

答案 0 :(得分:3)

file是一个程序(不是bash函数);你可以读取文件并检查非ascii字符。如果您找到任何输出false并停止处理,如果您到达文件输出true的末尾。

答案 1 :(得分:0)

您可以使用libicu来测试字符串是否与特定编码匹配。 Iconv 是另一种选择