如何检查命令行中是否有字符串

时间:2013-11-06 13:28:17

标签: c string unix

我有这个命令行:> write_strings“Hello World!” a.txt b.txt dir / a.txt。 所有元素(命令,字符串,文件名)都进入char指针数组。如何获取元素并检查它是字符串还是文件名? 我并不是指确切的代码行,而只是需要这个想法。如果没有字符串,程序应该返回错误。

3 个答案:

答案 0 :(得分:1)

您可以使用stataccess等API来检查路径指向的文件是否存在。文件路径和常规字符串传递给您的流程时没有根本区别。

如果您使用的是标准main(int argc, char *argv[])约定,则可以遍历argv,通过上述系统调用之一检查每个约会是否为文件。

答案 1 :(得分:1)

可以在命令行上传递的每个字符串都是一个潜在的路径名,因为在这两种情况下唯一的限制是不能有任何NUL。

具有命令行语法的程序,其中特定参数可能会或可能不会用作路径名(取决于“filename-ish strings”或文件存在测试的某些模糊定义)是一个糟糕的设计。每个参数应具有由参数列表中的顺序定义的含义,或者与-m msg-o outputfile等选项相关联。

一个行为良好的unix程序会让用户根据需要创建一个名为Hello world!的文件。

答案 2 :(得分:0)

不考虑该计划可能有多么有意义 - 您可以通过char *argv[]循环浏览argv[i][j]的单个字符。如果每个字符串都包含“.txt”,则表示您没有字符串,而该字符串不是上下文中的文件名