添加功能

时间:2012-09-09 21:03:23

标签: c

#include <stdio.h>
int bitCount(unsigned int n);

int main(void) {
    printf ("# 1-bits in base 2 representation of %u = %d, should be 0\n", 0, bitCount (0));
    printf ("# 1-bits in base 2 representation of %u = %d, should be 1\n", 1, bitCount (1));
    printf ("# 1-bits in base 2 representation of %u = %d, should be 17\n", 2863377066u, bitCount(2863377066u));
    printf ("# 1-bits in base 2 representation of %u = %d, should be 1\n", 268435456, bitCount(268435456));
    printf ("# 1-bits in base 2 representation of %u = %d, should be 31\n", 4294705151u, bitCount(4294705151u));
    return 0;
}

int bitCount(unsigned int n) {
    /* your code here */
}

您已决定要使用上面的bitcount程序从命令行

开始工作
# ./bitcount 17
2
# ./bitcount 255
8
# ./bitcount 10 20
too many arguments!
# ./bitcount
[the same result as from part a]

我知道我们必须包含 printf("too many arguments!")高于return 0,但它一直给我一个错误。 任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

修改您的main声明以接受参数:

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

确保参数count(argc)为2(一个用于命令,一个用于参数):

if(argc < 2) {
    // Give some usage thing
    puts("Usage: bitcount <whatever>");
    return 0;
}

if(argc > 2) {
    puts("Too many arguments!");
    return 0;
}

然后,使用argv[1]之类的内容将参数int解析为atoi

printf("%d\n", bitCount(atoi(argv[1])));

(顺便说一下,它位于stdlib.h。你可能也想做一些错误检查。)