将多个参数传递给main()

时间:2017-01-28 16:32:19

标签: c parameters command-line-arguments main

对于我的类,我需要创建一个在运行时接受多个参数的函数:

void main(int x, int y, int generation, char *layout[20])

但是当程序使用我对这些变量的输入运行时,信息不会存储在调试过程中

run 3 3 3 Test_Round
print x // returns 5
print y // returns -8779

如何将多个参数传递给main函数,以便main识别我给它的参数?

谢谢大家!我只是使用argv [1]等来获取我需要的正确数据!

3 个答案:

答案 0 :(得分:5)

标准清楚地说明了如何声明主要功能。

来自C99标准:

  

5.1.2.2.1程序启动

     

程序启动时调用的函数名为main。该实现声明没有原型   功能。它应使用 int 返回类型定义,并使用否定义   参数

int main(void) { /* ... */ } 
  使用两个参数

     

(此处称为argcargv,但可以使用任何名称   它们是声明它们的函数的本地符号:

int main(int argc, char *argv[]) { /* ... */ } 
  

或等同物; 9)或某些   其他实现定义的方式

     

如果他们被宣布,那么   主函数的参数应遵守以下约束条件

     

- argc的值应为非负

     

- argv[argc]应为 null   指针。

     

- 如果argc的值大于零,则为数组   成员argv[0]argv[argc-1]包含包含指针   到字符串,由主机提供实现定义的值   程序启动前的环境。意图是供给   程序信息在程序启动之前从其他地方确定   在托管环境中。如果主机环境不具备   提供大写和小写字母的字符串   实施应确保收到字符串   小写。

     

- 如果argc的值大于零,则为字符串   argv[0]指向的代表程序名称; argv[0][0]应该是   如果程序名称不可从主机获得,则空字符   环境。如果argc的值大于1,则为字符串   argv[1]通过argv[argc-1]指出的程序   参数。

     

- 参数argcargv以及指向的字符串   由argv数组可以修改程序,保留他们的   程序启动程序终止之间的最后存储值

答案 1 :(得分:1)

 void main(int x, int y, int generation, char *layout[20])

main()的无效签名。你需要使用

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

其中,argv[0]argv[argc-1]将保存传递给main()的参数。

引用C11,章节§5.1.2.2.2,

  

如果argc的值大于零,则argv[0]指向的字符串   代表程序名称; argv[0][0]如果是,则为空字符   程序名称不能从主机环境中获得。如果argc的值是   大于一,argv[1]通过argv[argc-1]指向的字符串   代表程序参数。

答案 2 :(得分:0)

你不能在main函数中传递两个以上的参数。在main函数中,您只能传递two参数或Zero参数。

使用以下参数,您可以传递值命令行。

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