0

假设我想通过命令打开程序(使用 argc 和 argv)。你得到你的程序名称,打开程序。它为您提供 .exe。然后,一旦你的 program.exe 运行,添加另一个参数,例如 (program.exe open),它应该会在你的程序中打开一些东西。

if (argc >= 5){
    if (int(argv[1]) == 1){
        function1();
        function2();
        function3();

    }

}

基本上在这种情况下,如果用户要输入 program.exe 1,(在这种情况下,1 是开头)它应该执行以下功能。为什么这在逻辑上不正确?(因为没有显示)

4

3 回答 3

2

你需要的是这个:

if (argc >= 2){ // the argc is count of supplied argument
                // including executable name
    if ( (argv[1][0]-'0') == 1){
        //argv[1] will be "1"
        //so take first character using argv[1][0]--> gives '1'-->49
        //substract ASCII value of 0 i.e. 48
       //Note: - This will only work for 0-9 as supplied argument
        function1();
        function2();
        function3();

    }

}
于 2013-10-11T15:57:26.537 回答
1

您将 argv[1] 转换为 int 不起作用。您可以使用atoi()

if (argc >= 2){
    if (atoi(argv[1]) == 1){
        function1();
        function2();
        function3();
    }
}
于 2013-10-11T15:59:53.407 回答
0

因为int(argv[1])不会将字符串 "1"转换为int 1. 试试这个:

if (argv[1][0] == '1') {
于 2013-10-11T15:57:18.507 回答