【问题标题】:Passing integer arguments to the main function in C将整数参数传递给 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 标准接口。

标签: c multithreading arguments main


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2013-01-27
    • 2018-05-29
    相关资源
    最近更新 更多