【发布时间】:2012-11-16 00:24:08
【问题描述】:
如果我运行 C++ 程序
./program arg1
argv[1] 存在,但是有没有办法检查 argv[2] 是否存在?
【问题讨论】:
-
检查
argc怎么样?
如果我运行 C++ 程序
./program arg1
argv[1] 存在,但是有没有办法检查 argv[2] 是否存在?
【问题讨论】:
argc怎么样?
对,看argc的值:
if (argc > 2) {
... use argv[2] ...
}
【讨论】:
是的,argv[i] 以NULL 结尾。 argc 是 number of arguments 传递给主函数。从下面的代码中得到一个想法。
#include<stdio.h>
int main(int argc, char* argv[]){
int i=0;
while(argv[i]!=NULL){
printf("\n %s is argv %d ",argv[i],i);
i++;
}
printf("\n");
}
desktop:~$ gcc main.c -o main
desktop:~$ ./main grijesh thisiscrazy4
./main is argv 0
grijesh is argv 1
thisiscrazy4 is argv 2
这里 argv 是 - "./main","grijesh","thisiscrazy4",NULL 和 argc = 3。
argv[0] 是可执行文件名称(执行路径),可用于标记错误语句。argv 称为参数向量,argc 称为参数计数器。您也可以使用其他变量名。
阅读full syntax of main() function,其中还包括环境变量。
int main (int argc, char *argv[], char *envp[])
{
return 0;
}
【讨论】:
argc == 3 实际上 - 执行路径也被认为是一个参数。
ADDED MORE INFORMATION ABOUT MAIN SYNTAX
x = argv[i] != NULL 返回 0 或 1 取决于 argv[i] 的值,其中 x = argv[i] 产生一个指针。是的,因为在 C 中每个非零都等价于 True,所以 if (argv[i] != NULL) 可以写成 if (argv[i])
main 的原型说明了一切:
int main(int argc, char **argv);
这里的第一个参数argc带有Number_Of_Arguments(argv[])_Present的值
【讨论】:
您可以尝试相反的方法。测试argc的数量,可以知道argv[n]的存在。
【讨论】: