#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
,但它一直给我一个错误。
任何人都可以帮我这个吗?
答案 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
。你可能也想做一些错误检查。)