【问题标题】:Accepting Integer Array from Command Line - C Programming从命令行接受整数数组 - C 编程
【发布时间】:2016-04-11 18:17:27
【问题描述】:

我需要从命令行接受一个整数数组,例如: ./test 2 9 -5 17

目前我有:

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

然后循环查找此数组中的两个数字,它们从 argv[1] 开始创建可能的最大值。显然这是行不通的。我需要它吗:

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

然后解析这个?我不确定如何在 C 中将字符转换为整数。

谢谢,

【问题讨论】:

  • 可接受的整数范围是多少?
  • 我不确定如何在 C 中将字符转换为整数atoi()strtol() 可以将字符串转换为 int
  • 没有范围。任何整数,正负,大/小,都可以接受。
  • JDeffo: "no range. Any integers" --> 那么像 123456789012345678901234567890 这样的值是可以接受的吗?
  • @Mike Holt OP 可能希望将代码的操作限制为某些 C 整数类型范围内的整数,例如 intlong long 或可能不这样做。了解 OP 对编码目标的想法会很有启发性。

标签: c arrays command


【解决方案1】:

使用 strtol() 将每个 argv[i](对于 i 从 1 开始)转换为 long int。

【讨论】:

    【解决方案2】:
    int main(int argc, char *argv[])
    {
        size_t i;
        int n;
    
        for (i = 0; i < argc; ++i) {
            if (sscanf(argv[i], "%d", &n) == 0) {
                fprintf(stderr, "Position %d is not an int\n", i + 1);
                return 1;
            }
            printf("%d\n", n);
        }
    
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 2014-06-01
      • 2017-05-08
      • 1970-01-01
      • 2013-05-08
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多