从命令行C

时间:2015-12-17 20:15:13

标签: c regex file parsing command-line

我试图将命令行参数解析为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 */
    }
  }

1 个答案:

答案 0 :(得分:1)

我首先要确保该文件与lstat一起存在。除此之外,我要说你需要决定是否更关心误报或漏报。此外,您需要确定您归类为文本文件的内容。如果有一些文本文件没有.txt扩展名,您是否关心?如果你这样做,那就放弃检查。您可以打开文件并扫描非ASCII字符。您还可以查看前8个字节左右,寻找非ASCII来限制问题。