如何从命令行将 key=val 解析为 C 程序

发布于 2024-12-29 05:42:01 字数 358 浏览 0 评论 0原文

我从事学术工作,我用 C 语言编写计算代码。我想以某种方式执行我的程序,就像

$ ./foo.exe n=20 f=0.25 name=data.bin

我阅读了有关 getopt()getsubopt() 的内容 一样但似乎使用这些函数我必须像这样组织命令行

$ ./foo.exe -n 20 -f 0.25 -name data.bin

key=val 样式更适合我的应用程序,因为大多数参数都是数字。是否可以从命令行参数中提取 key=val 模式?有图书馆可以做到这一点吗?

多谢。

I work in academic and I write my computation codes in C. I want to execute my program in a way like

$ ./foo.exe n=20 f=0.25 name=data.bin

I have done some reading about getopt() and getsubopt() but it seems to use these functions I have to organize command-line like

$ ./foo.exe -n 20 -f 0.25 -name data.bin

The key=val style is more suitable for my application since most of the parameters are numbers. Is it possible to extract key=val pattern from command-line arguments? Is there a library to do that?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

末骤雨初歇 2025-01-05 05:42:01

如果“=”周围没有空格,那么这很简单:

char letter;
float value;
if (sscanf(argv[i], "%c=%f", &letter, &value) == 2)
{
    // process option
}
else
{
    // argument doesn't match x=n pattern.
}

If you don't ever have spaces around the '=', then it's quite easy:

char letter;
float value;
if (sscanf(argv[i], "%c=%f", &letter, &value) == 2)
{
    // process option
}
else
{
    // argument doesn't match x=n pattern.
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文