OS X 控制台应用程序 - 无法读取参数

OS X console app - cannot read the arguments

在一个简单的控制台应用程序上,我无法读取参数

int main(int argc, char ** argv) {
    if (argc > 1)
        strcpy(path, argv[1]);
printf("arguments %d\n", argc);
....

argc 始终为 1

从控制台运行应用程序是这样的:

open mytestconsoleapp --args arg1 arg2 arg3

argc 总是 1。这对我来说很奇怪。

我不明白为什么,有什么问题?

如果您实际写的是 C++ 而不是 C,则可以使用它。

static std::string path;

int main( int argc, char* argv[ ] ) { 
    // With either solution you should make sure that the passed in 
    // argument isn't gigantic.
    if ( argc > 1 ) { 
        path.assign( argv[ 1 ] );
        std::cout << path << '\n'
    }

    // Or you could use one of the std::string constructors.
    // This is a nice solution if you don't require global state.
    if ( argc > 1 ) { 
        std::string buffer{ argv[ 1 ] };
        std::cout << buffer << '\n';
    }
}

如果您在 C 中执行此操作,则使用:

static char path[ 256 ];

int main( int argc, char* argv[ ] ) {
    if ( argc > 1 ) { 
        strncpy( path, argv[ 1 ], sizeof( path ) - 1 );
        printf( "%s\n", path );
    }
    
    // Or if you don't need the global variable.
    if ( argv > 1 ) { 
        char buffer[ 256 ] = { 0 };
        strncpy( buffer, argv[ 1 ], sizeof( buffer ) - 1 );
        printf( "%s\n", buffer );
    }
}

然后 运行 您的应用程序具有以下内容:./mytestconsoleapp test

行为正确。你的程序没有问题。但是,%d 是十进制的格式字符串。

我建议你试试 %s ?