-4
#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が、エラーが発生し続けます。誰でもこれで私を助けることができますか?

4

1 に答える 1

1

main引数を受け入れるように宣言を変更します。

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

引数カウント ( argc) が 2 (コマンド用に 1 つ、引数用に 1 つ) であることを確認します。

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

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

次に、次のようなものを使用して引数argv[1]を解析します。intatoi

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

(stdlib.hちなみに、これは にあります。また、エラー チェックも行いたい場合があります。)

于 2012-09-09T21:08:05.820 に答える