【问题标题】:Checking if argv[i] exists C++检查 argv[i] 是否存在 C++
【发布时间】:2012-11-16 00:24:08
【问题描述】:

如果我运行 C++ 程序

./program arg1

argv[1] 存在,但是有没有办法检查 argv[2] 是否存在?

【问题讨论】:

  • 检查argc怎么样?

标签: c++ input main


【解决方案1】:

对,看argc的值:

if (argc > 2) {
  ... use argv[2] ...
}

【讨论】:

    【解决方案2】:

    是的argv[i]NULL 结尾。 argcnumber 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;
    }
    

    Learn HEAR

    【讨论】:

    • 在这个例子中 argc == 3 实际上 - 执行路径也被认为是一个参数。
    • ADDED MORE INFORMATION ABOUT MAIN SYNTAX
    • @Hugo No , x = argv[i] != NULL 返回 01 取决于 argv[i] 的值,其中 x = argv[i] 产生一个指针。是的,因为在 C 中每个非零都等价于 True,所以 if (argv[i] != NULL) 可以写成 if (argv[i])
    • 是的,这就是我的意思,不过感谢您的澄清。
    【解决方案3】:

    main 的原型说明了一切:

    int main(int argc, char **argv);
    

    这里的第一个参数argc带有Number_Of_Arguments(argv[])_Present的值

    【讨论】:

      【解决方案4】:

      您可以尝试相反的方法。测试argc的数量,可以知道argv[n]的存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-22
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        相关资源
        最近更新 更多