我试图将命令行参数解析为parse.c文件,该文件循环遍历所有参数,然后将它们传递到另一个文件中。
我遇到了一个问题,如果用户想要搜索特定的文本文件,我就不知道是否有任何可靠的方法来检查参数是否是文本文件。
以下是我迄今为止所做的工作。典型的命令行可能是
./sgrep -i searchstring file.txt
那么我有办法100%在命令行中识别文件吗?
for (i=0; i<arguments; i++) {
if (strcmp("-i", args[i])==0) {
data->case_sensitive = 0; /* set case insensitive */
}
else if((len = strlen(args[i])) > 3 && !strcmp(args[i]+len-4, ".txt")){
data->filename = args[i]; /* store textfile name in filename*/
}
else {
data->reg_exp = args[i]; /' store searchstring in regexp */
}
}
答案 0 :(得分:1)
我首先要确保该文件与lstat
一起存在。除此之外,我要说你需要决定是否更关心误报或漏报。此外,您需要确定您归类为文本文件的内容。如果有一些文本文件没有.txt
扩展名,您是否关心?如果你这样做,那就放弃检查。您可以打开文件并扫描非ASCII字符。您还可以查看前8个字节左右,寻找非ASCII来限制问题。