我正在尝试将命令行参数解析到一个 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 */
}
}
最佳答案
我首先使用lstat
确保该文件存在。除此之外,我想说你需要决定你是否更关心误报或漏报。此外,您还需要决定将什么分类为文本文件。您是否关心是否存在一些没有 .txt
扩展名的文本文件?如果你这样做,那就放弃那张支票。您可以打开该文件并扫描非 ASCII 字符。您也可以只查看前 8 个字节左右,寻找非 ASCII 来限制问题。
关于c - 从命令行 C 解析文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34343473/