【问题标题】:How to write a "argv" and "argc"如何编写“argv”和“argc”
【发布时间】:2013-10-08 04:13:56
【问题描述】:

我了解 argv 和 argc 的作用以及它们的使用方式,但我需要重新创建它们。在 C 中,你将如何编写一个函数来模仿它们。

【问题讨论】:

  • 您是否认为argvargc 只是魔术变量?类似于 perl 的 ARGV
  • argv 是字符串数组(字符指针数组),argc 是该数组的长度。所以重新创建它们只是制作一个字符串数组的问题。你想用argcargv 做什么?
  • 我需要做 argv 和 arc 做的事情,但是在一个程序中。当您输入一串字符时,第一个字符串将是命令,后面的字符串是参数,argc 保持计数。我知道程序启动后不能修改 argc 和 argv,所以我需要创建一个模仿它们的函数。

标签: c argv argc


【解决方案1】:

您只需创建一个数组来存储要作为argv 传入的参数,并相应地设置argc,类似于;

int argc = 3;
char* argv[argc + 1];

argv[0] = "binary name";
argv[1] = "first parameter";
argv[2] = "second parameter";
argv[3] = NULL;

int result = main(argc, argv);

【讨论】:

  • 我不知道我会有多少个argc,它会被用户读入,他们不应该有空格。所以我知道我需要一个字符串数组。我正在寻找类似 int main(){ char *command[100] int cNum = 30;获取命令(命令,cNum); while(strcmp(command[0], "exit")) != 0){ //做任何事 } return 0; } void getCommand(command, cnum){ //做一些事情 }
  • @user2808307 我建议你看看stdarg.h
  • @Arpit - 在 C 中是,在 C++ 中不是。
【解决方案2】:

argcargv 用于从命令行启动程序,或者想将一些变量传递给程序。
argc 包含参数的数量,argv 是指向字符串参数的指针数组。
main 的这些参数是

main(int argc, char** argv)  

语法char** argvargv 声明为指向字符指针的指针,即指向字符数组(字符串)的指针——换句话说,字符串数组。你也可以写成char* argv[]

当您运行程序时,数组argv 按顺序包含您输入命令时命令行上的所有信息(字符串由空格分隔),包括命令本身。整数argc 给出字符串的总数,因此等于参数个数加一。例如,如果您键入

a.out -i 2 -g -x 3 4

程序将收到

argc = 7
argv[0] = "a.out"
argv[1] = "-i"
argv[2] = "2"
argv[3] = "-g"
argv[4] = "-x"
argv[5] = "3"
argv[6] = "4"

【讨论】:

  • 好吧,假设在我的程序中我需要类似的东西。第一个命令很明显将启动程序,以下参数是该命令的变量。
  • @user2808307;更新了我的答案。
【解决方案3】:

在C和C++中,主函数的函数原型是这样的:

int main(int argc, char *argv[]);

【讨论】:

    【解决方案4】:

    您无法重新创建它们,但可以更改它们的名称。

    在您的主目录中,您可以输入int main(int numberOfArguments, char *arrayOfArguments[]) 并使用numberOfArguments 作为argcarrayOfArguments 作为argv

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 2011-04-15
      • 2012-04-20
      • 2020-11-03
      • 2013-09-08
      • 2013-05-27
      • 2015-03-27
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多