0

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

4

3 回答 3

1

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

具有命令行语法的程序,其中特定参数可能会或可能不会用作路径名(取决于“文件名字符串”的一些模糊定义,甚至是文件存在测试)是一个糟糕的设计。每个参数都应该具有由其在参数列表中的顺序定义的含义,或者通过与类似-m msgor的选项相关联来定义-o outputfile

一个表现良好的 unix 程序会让用户创建一个文件,Hello world!如果他愿意的话。

于 2013-11-06T13:48:41.347 回答
1

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

如果您使用的是标准main(int argc, char *argv[])约定,您可以遍历argv,通过前面提到的系统调用之一检查每个以查看它是否是文件。

于 2013-11-06T13:30:17.217 回答
0

不考虑程序可能有意义或可能没有意义-您可以char *argv[]通过循环遍历它们来比较您的单个字符argv[i][j]。如果每个字符串都包含一个“.txt”,则您没有字符串,这在您的上下文中不是文件名

于 2013-11-06T14:11:50.347 回答