所以我正在阅读C编程语言并遇到一个部分,现在允许程序有参数...... 例如
find -x -n pattern
此处,-x
表示除外。
-n
表示编号行...
在另外几行输入中,pattern
就是它所寻找的。 p>
现在,他们将find
视为*argv[0]
,将-x
和-n
视为*++argv[0]
,将pattern
视为*++argv[0]
。计算机如何知道另一个arg?
如果3件事都等于*++argv[0]
,那么他们会留在argv[1]
,但他们都是?{
有谁可以请深入解释?
答案 0 :(得分:3)
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
这不会起作用,因为"一些" "笨" "文件名"将被视为单独的论点。 但你可以这样做:
mv "some stupid filename" sane_filename
获取嵌入空格的单个参数。
答案 1 :(得分:2)
++n
preincrement 运算符会更改它应用的变量。第一次执行++argv
时,将0
处的索引实际指向原始值1
的元素argv
,第二次指向元素2
,依此类推。