我有这个命令行:> write_strings“Hello World!” a.txt b.txt dir / a.txt。 所有元素(命令,字符串,文件名)都进入char指针数组。如何获取元素并检查它是字符串还是文件名? 我并不是指确切的代码行,而只是需要这个想法。如果没有字符串,程序应该返回错误。
答案 0 :(得分:1)
您可以使用stat或access等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”,则表示您没有字符串,而该字符串不是上下文中的文件名