在 C (Windows) 上解析命名命令行参数

问题描述 投票:0回答:1

我目前正在 Windows 上使用 Visual Studio 和 C 开发一个工具,但是我注意到我无法将

unistd.h
等库导入到我的源文件中以进行命令行参数解析。

目前,我正在使用

strcmp
检查命令行参数并将标志与值相关联。

// Get supplied command-line arguments
SQLCHAR* server = NULL;
SQLCHAR* database = NULL;
SQLCHAR* username = NULL;
SQLCHAR* password = NULL;
SQLCHAR* query = NULL;

for (int i = 1; i < argc; i++) {
    if (strcmp(argv[i], "-s") == 0) {
        server = argv[i + 1];
    }
    else if (strcmp(argv[i], "-d") == 0) {
        database = argv[i + 1];
    }
    else if (strcmp(argv[i], "-u") == 0) {
        username = argv[i + 1];
    }
    else if (strcmp(argv[i], "-p") == 0) {
        password = argv[i + 1];
    }
    else if (strcmp(argv[i], "-q") == 0) {
        query = argv[i + 1];
    }
}

在 Windows 上有更好的方法吗?

谢谢你。

c windows visual-studio
1个回答
0
投票

unistd.h
不是Windows API的一部分(它不是C标准的一部分,所以你不能责怪Windows),但是你可以使用
MinGW
来编译
getopt()
getopt_long()(GNU扩展)在 Windows 上以类似于 UNIX 的操作系统中的方式解析它们。

如果你做不到这一点,你可以简单地从网络上获取

getopt()
source 的副本,并在你的代码中使用它(尽管它是在 GNU 通用公共许可证下分发的)。

© www.soinside.com 2019 - 2024. All rights reserved.