将整数参数传递给 C 中的主函数

Posted

技术标签:

【中文标题】将整数参数传递给 C 中的主函数【英文标题】:Passing integer arguments to the main function in C 【发布时间】:2017-10-04 12:36:47 【问题描述】:

我的问题是如何通过argv[] 传递int 参数。

我要使用的格式如下:虽然 NTHREADS 和 LETTER 可以是可选的,但必须提供 FILE1。

./test [-t NTHREADS] [-l LETTER] FILE1

我该如何处理?

【问题讨论】:

您只能传递给主要的 char* 变量。你还是can convert to int。 这是独立的还是托管的环境? @Olaf 鉴于命令行用法和参数样式,这可能是 POSIX 标准接口。 【参考方案1】:

你不能。根据定义,main() 的所有参数都是 char*。如果您愿意,您可以转换它们,但这由您自行决定。有像getopt 这样的工具可以让编写这样的界面变得更加容易,并且可以根据需要进行转换。

【讨论】:

不太对。对于独立环境,main 可以有任何签名(和名称)。 @Olaf:我们只讨论托管环境,除非有人特别指出他们在独立环境中工作。围绕独立环境有很多警告,这会使一切都无法回答。你的评论是毫无意义的吹毛求疵。请删除它,然后将其标记为已过时。 我现在解决了这个问题,我可以在 main 中使用可选和命名参数吗? 值得打开一个包含您编写的代码的新问题。这是一个新问题。 我无法在 24 小时新帐户之前打开问题,但这是我的主要功能需要可选和命名参数的问题,命名的参数是一个文件,此参数在任何情况下都必须存在我该怎么做它【参考方案2】:

您可以使用 atoi() 函数,该函数在 stdlib.h 标准库中可用,或者您可以使用 strtol() 来获得更强大的解决方案,该函数也在 stdlib.h 中

例子:

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

int main( int numArgs, char **argList )

    int num, i;
    for( i = 0; i < numArgs; i++ )
    
        fprintf( stdout, "\nArgument #%i (\"$s\") is %li as a number.", i, argList[i], strtol(argList[i], NULL, 10) );
    

    return 0;

【讨论】:

以上是关于将整数参数传递给 C 中的主函数的主要内容,如果未能解决你的问题,请参考以下文章

将数组作为参数传递给 C 中的函数

Java:将具有不同类型的参数传递给函数

C将int数组指针作为参数传递给函数

将列表作为参数传递给 Python C 模块?

将对象作为参数传递给函数

Excel VBA - 将参数参数传递给 Sub