-4

如何使用 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) {
}
4

2 回答 2

1

你为什么要使用atoi任何东西?如果要将字符串解析为整数值,则应该使用strol. atoi甚至不适合生产输出。要生成该行:

# ./paircounts 17 0

你会使用puts(or fputs, or printf, or fprintf, or possible fwrite, or maybe write, ...) 而不是atoi. 例如: puts( "# ./paircounts 17 0" )。其他行也是如此。

于 2013-02-04T04:46:58.137 回答
0

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

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

    if (argc != 3) throw some error;
    

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

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

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

于 2013-02-04T04:41:25.160 回答