gpt4 book ai didi

c - 读取命令行参数

转载 作者:太空狗 更新时间:2023-10-29 16:29:07 26 4
gpt4 key购买 nike

我编写了一个计算 pi (π) 积分的小程序。现在我面临一个问题,如何扩展它来计算一个积分,在启动应用程序时它将作为一个额外的参数给出。如何在程序中处理这样的参数?

最佳答案

当您编写主函数时,您通常会看到以下两个定义之一:

  • int main(void)
  • int main(int argc, char **argv)

第二种形式将允许您访问传递给程序的命令行参数,以及指定的参数数量(参数以空格分隔)。

main 的参数是:

  • int argc - 程序运行时传入的参数数量。它至少是 1
  • char **argv - 这是指向 char * 的指针。它也可以是这样的:char *argv[],意思是“char * 的数组”。这是一个 C 风格字符串指针数组。

基本示例

例如,您可以这样做来打印出传递给您的 C 程序的参数:

#include <stdio.h>

int main(int argc, char **argv)
{
for (int i = 0; i < argc; ++i)
{
printf("argv[%d]: %s\n", i, argv[i]);
}
}

我正在使用 GCC 4.5 编译一个名为 args.c 的文件。它将编译并构建默认的 a.out 可执行文件。

[birryree@lilun c_code]$ gcc -std=c99 args.c

现在运行它...

[birryree@lilun c_code]$ ./a.out hello there
argv[0]: ./a.out
argv[1]: hello
argv[2]: there

所以你可以看到在argv中,argv[0]是你运行的程序的名字(这不是标准定义的行为,但是很常见。您的论点从 argv[1] 开始及以后。

所以基本上,如果你想要一个参数,你可以说...

./myprogram积分


一个简单的案例给你

你可以检查 argv[1] 是否是 integral,可能像 strcmp("integral", argv[1]) == 0.

所以在你的代码中......

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
if (argc < 2) // no arguments were passed
{
// do something
}

if (strcmp("integral", argv[1]) == 0)
{
runIntegral(...); //or something
}
else
{
// do something else.
}
}

更好的命令行解析

当然,这一切都非常初级,随着您的程序变得越来越复杂,您可能需要更高级的命令行处理。为此,您可以使用像 GNU getopt 这样的库.

关于c - 读取命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com