【问题标题】:Accessing arguments with argv使用 argv 访问参数
【发布时间】:2012-05-16 13:19:28
【问题描述】:

这是我一直在通过打印一堆东西来测试的东西,但有一个案例由于某种原因我无法弄清楚。

我需要将一个整数作为参数传递给稍后使用的函数,但是当我再次将其打印出来以确保正确存储它时,我得到了一个随机数。这是代码的相关部分:

int num_bytes = argv[1]; 
....
printf("Max number of bytes: %d", num_bytes);

我只向函数传递了一个参数,它是一个 int。我也尝试将 argv[1] 转换为 int,但这也不起作用。我不确定这是否是 printf 的问题。如果只是这样,我不介意。我只需要知道我将值正确存储为 int 即可。我知道 argv 是一个指向字符串的指针数组(我认为是 C 字符串?),但我认为您可以将字符转换为整数。

【问题讨论】:

    标签: c argv


    【解决方案1】:

    char **argv 被视为字符数组(或字符串)。您需要先将argv 中的值转换为整数。

    您可以通过atoi

    int num_bytes = atoi(argv[1]);
    

    【讨论】:

    • atoi() 不是标准函数,看我的回答。
    • @H2CO3:无论如何,您都需要为这两种方法导入 <stdlib.h>atoi() 是更直接(也更容易观察)的方式。
    • 我想知道为什么你的回答得到了两个赞成票而我的零个赞成票,我提供了多种解决方案以及一个标准解决方案,我还解释了它产生这些解决方案的原因具体结果...
    • 标准:可在任一官方 C 论文(ANSI C、C89、C99 等)中找到
    • @H2CO3: atoi() 是一个标准的 c 库函数,在 c99 标准的 §7.22.1.2 下定义。
    【解决方案2】:

    argv 是一个指向字符串数组的指针。您需要调用 atoi(argv[1]) 来获取您传递的整数参数。

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 2011-02-16
      • 2012-05-27
      • 1970-01-01
      • 2021-12-31
      • 2014-10-26
      • 2014-11-28
      • 2011-05-02
      • 2011-12-19
      相关资源
      最近更新 更多