gpt4 book ai didi

c - 像 snmpget 这样的 c 应用程序采用什么参数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:09 24 4
gpt4 key购买 nike

我想从同一项目中的另一个 c 程序调用 snmpget.c。出于这个原因,我将 main() 更改为函数 get_func() ,它采用相同的参数。但我不确定如何给出参数,即 argv[0]我的论点看起来像这样:

char *argstr[]=
{
"v",
"1",
"c",
"public",
"-Ovq",
"192.168.1.1",
"ifInOctets.7",
"ifOutOctets.7",
NULL
};

然后

i = get_func(10, argstr);

1.argv[0]应该是应用名称还是路径?

2.对于 c 使用 char *argstr[] 是否正确?

3.snmpget 没有正确接受这些参数。可能是什么原因?

它可以在命令中使用相同的参数正常工作。

最佳答案

  1. 您的 get_func 期望参数以 argv[1] 开头,因此您的 argstr 参数不应以 "v"开头 但与其他内容(例如,程序名称或如果 get_func 不使用它则只是一个空字符串)。
  2. 是的。但是要注意你的 argstr 包含不可修改的字符串,如果 get_func 想要修改它们,你可以使用复合文字

    char *argstr[]=
    {
    (char []){ "v" },
    (char []){ "1" },
    /* etc */
    NULL
    };
  3. 参见 1. 和 2. 此外,argc 不正确(必须是 sizeof argstr/sizeof *argstr - 1,在您的情况下为 8,不是 10)。


不是您问题的直接答案,而是考虑重新设计它(但是取决于您当前正在做什么)。例如,编写一个接受存储不同选项(已经解析和验证)的结构的函数,并将旧的 mainsnmpget.c 更改为仅扫描和扫描的函数验证参数,初始化这样一个结构对象,并调用这个函数。然后,也许将您的文件拆分为 snmpget.csnmpget_main.canother_c_file.c(当然有更好的名称)和链接针对 snmpget.c 的目标文件的两种用户界面实现。

关于c - 像 snmpget 这样的 c 应用程序采用什么参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25200431/

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