C,unsigned int arg的二进制表示

时间:2013-02-04 04:24:11

标签: c

如何使用atoi使pairCounts生成这一行?

# ./paircounts 17 0

# ./paircounts 255 7

# ./paircounts 10 20 too many arguments!

int pairCounts(unsigned int n);

int main(int argc, char *argv[]) {
    const char testStr[] = "# pairs in base 2 of %u = %d, should be %d\n";
    printf (testStr, 0, pairCount (0), 0);
    printf (testStr, 11, pairCount (11), 1);
    printf (testStr, 2863377066u, pairCount (2863377066u), 2);
    printf (testStr, 268435456, pairCount (268435456), 0);
    printf (testStr, 4294705151u, pairCount (4294705151u), 29);
    return 0;
}

int pairCounts(unsigned int n) {
}

2 个答案:

答案 0 :(得分:1)

为什么你会使用atoi来做任何事情?如果要将字符串解析为整数值,则应使用strol。并且atoi甚至不适合产生输出。要生成这一行:

# ./paircounts 17 0

您可以使用puts(或fputsprintffprintf,或可能fwrite,或write。 ..)而不是atoi。例如:puts( "# ./paircounts 17 0" )。与其他行类似。

答案 1 :(得分:0)

阅读this页面。我知道它的cplusplus.com但它仍然适用于atoi的c版本。我不完全确定你想要完成什么,但我有两个想法:

  1. 您正在尝试检查是否有正确数量的参数。在这种情况下,您不需要atoi,您只需要检查argc的正确数量:

    if (argc != 3) throw some error;
    

    请记住,argc包含程序名称,因此它总是比实际输入参数多一个。

  2. 您想使用atoi做其他事情,在这种情况下请阅读atoi指南,因为它使用起来非常简单。

  3. 如果您想要更多说明,则需要改进您的问题。祝好运。