c语言 - 将多个参数传递给 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] 等来获取我需要的正确数据!

该标准明确了您需要如何声明主函数。

从C99标准:

5.1.2.2.1 程序启动

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

int main(void) { /* ... */ } 

具有两个参数

(此处称为argcargv,尽管可以使用任何名称,如 它们是声明它们的函数的本地):

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

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

如果声明了它们,则 主函数的参数应遵循以下约束

argc的值应为非负数

argv[argc]应为空 指针。

— 如果argc的值大于零,则数组 成员argv[0]argv[argc-1]包含应包含指向字符串的指针,这些字符串由主机提供实现定义的值 程序启动前的环境。目的是供应给 在从其他地方启动程序之前确定的程序信息 在托管环境中。如果主机环境无法 提供带有大写和小写字母的字符串, 实现应确保在 小写。

— 如果argc的值大于零,则字符串 指向argv[0]表示程序名称;argv[0][0]应 如果主机无法提供程序名称,则为null 字符环境。如果 argc 的值大于 1,则字符串 指向argv[1]通过argv[argc-1]代表程序 参数。

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

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

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

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

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

引用C11,章节§5.1.2.2.2,

如果argc的值大于零,则argv[0]指向的字符串 表示程序名称;argv[0][0]应为空字符,如果 程序名称在主机环境中不可用。如果argc的值为 大于 1,由argv[1]argv[argc-1]指向的字符串 表示程序参数。

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

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

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

相关内容

  • 没有找到相关文章

最新更新