所以我在阅读《C 编程语言》时发现了一个部分,其中程序现在允许有参数...... 例如
find -x -n pattern
这里,-x
表示异常(exception)。
-n
表示编号行...
而 pattern
就是它在另外几行输入中寻找的内容。
现在他们将 find
视为 *argv[0]
、-x
和 -n
在 *++argv[0]
和 pattern
为 *++argv[0]
。计算机如何区分一个参数?
如果 3 个东西都等于 *++argv[0]
,那么它们将停留在 argv[1]
,但是所有这些?
谁能详细解释一下吗?
最佳答案
argv[0] = program name = "find"
argv[1] = first argument = "-x"
argv[2] = second argument = "-n"
argv[3] = third argument = "pattern"
argc
= 4,因此您知道没有其他参数需要处理。
不要对 *++argv[0]
等表达式中预自增运算符的使用感到困惑。参数在单独的数组元素中传递。
当 shell 执行你的命令时,它使用空格来分隔命令行 进入程序名称和参数并将它们传递给您的程序。有时您需要使用双引号来解决这个问题,例如,如果您需要处理名称包含嵌入空格的文件:
mv some stupid filename sane_filename
这不起作用,因为“some”“stupid”“filename”将被视为单独的参数。 但你可以这样做:
mv "some stupid filename" sane_filename
获取带有嵌入空格的单个参数。
关于c - *++argv[0] 如何引用不同的命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718958/