首页 > 解决方案 > 将 main 的 *argv[] 传递给另一个函数正在调用的函数?

问题描述

所以我有我的主要功能,还有另外两个功能,func1 和 func2。main 是从用户那里获取参数,将它们传递给 func1。fun1 检查了一些东西,然后想将参数发送给 func2。

我该怎么做?

 int main( int argc, char *argv[] )  {
  if( argc == 3 ){
    func1(argv);
  }

void func1(char **argv){
if(strcmp(argv[2], "-win"))
    func2(argv);
}

void func2(char ***argv){ //is this the right way?
......
}

我的意思是我知道 func1 正在接收参数,因为当我尝试它而不将它们发送到 func2 时,它起作用了。但我试图弄清楚如何将它们从 func1 发送到 func2。

标签: cpointersscopeargvargs

解决方案


查看文件中的这段代码main.c

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

void func1(char **argv);
void func2(char **argv);

int main(int argc, char *argv[])
{
    // you are need to pass 2 things to run this
    if (argc == 3)
    {
        func1(argv);
    }
    return 0;
}

void func1(char **argv)
{
    if (strcmp(argv[2], "-win")==0)
        func2(argv);
}

void func2(char **argv)
{
    printf("%s\n", argv[2]);
}

运行gcc -Wall main.c -o main && ./main f -win你会得到输出:-win到控制台。您不应该在内部操作数据argv,更安全的选择是更改func2为:

char *func2(char **argv)
{
    // Return some value after receiving argv
}

并返回您想要执行的操作的任何类型的结果。


推荐阅读