我正在编写一个 C 程序,它使用 DIR、opendir() 和 readdir() 查看当前目录中的所有文件,然后将它们分配给如下所示的 dirent 结构。
int main(int argc, char *argv[])
{
DIR *d;
char *dir_name = ".";
struct stat s;
d = opendir(dir_name);
while (1) {
struct dirent *entry;
entry = readdir(d);
if (!entry)
break;
//how to check if this is a text file before printing?
printf ("%s\n", entry->d_name);
}
closedir(d)
}
我需要了解的是如何测试文件以查看它是否是文本文件。我想到了使用 stat() 来查看模式。我可以通过这种方式排除目录。对于二进制文件,我认为我可以寻找可执行位,但这对于脚本来说是个问题,例如,它们是可执行的文本文件。
关于我如何能够以编程方式仅过滤文本文件的任何建议?