int main(int argc,char * argv [])
如果我有这个:
int main(int argc, char *argv[])
在本体中,有时可以使用argv[1]
找到程序。
我们什么时候在argv[0]
使用argv[1]
argv[0]
? 仅当我们想要读取命令行中的第二个参数时才这样做?
按照惯例 , argv[0]
是当前程序的名称 (或路径), argv[1]
至argv[argc - 1]
是用户提供的命令行参数 。
但是,这并非必须如此 - 程序可以通过操作系统特定的功能绕过这一要求,而且这种情况经常发生,以至于您应该意识到这一点。 (即使你意识到这一点,我也不确定你是否可以做很多事情,尽管......)
例:
gcc -O3 -o temp.o "My file.c"
会(应该)产生以下论点:
argc: 5
argv: ["gcc", "-O3", "-o", "temp.o", "My file.c"]
所以说argv[0]
会引用gcc
,而不是-O3
。
argv
是一个指针数组,并且该数组中的每个指针都存储来自命令行的一个参数。 所以argv[0]
是第一个参数(这是可执行文件/程序本身), argv[1]
是第二个参数,依此类推!
参数的总数由argc
决定。
假设你的C ++可执行文件是:
/home/user/program
(或Windows中的C:program.exe
)
如果你执行:
./home/user/program 1 2
(或Windows中的C:program.exe 1 2
)
argv[0] = /home/user/program
( C:program.exe
)
argv[1] = 1
argv[2] = 2
那是因为:
argv[0]
是可执行文件的路径 argv[1]
是第一个参数 编辑:
现在我看到argv[0]
不一定是可执行文件的路径。
阅读以下SO问题:args [0]保证是执行的路径吗?