現在、実現したい仕様は以下の通りです。
コマンドライン引数から整数を受け取り、ビット演算を用いてその値を2進数として標準出力する。
<補足>
コマンドラインから出力する長さと2進数出力する整数をうけとる。
出力する長さは1~4byteとする。
出力する長さと2進数出力する整数は、sscanfを用いて変数に代入する。
各bitごとの値を格納する配列bitのサイズは出力する長さから計算し、calloc()を用いて動的確保を行う。
<実行例(完成したとき)>
./test3
Usage: program <Length(byte)> <Integer number>
./test3 1 43
00101011
./test3 2 53018
11001111 00011010
./test3 4 987654321
00111010 11011110 01101000 10110001
10進数の値を2進数に変換する関数の作成
void cv2bin(unsigned char n){
int i;
for(i=DIGITS-1;i>=0;i--){
printf("%d",(n>>i)&1);
}
printf("\n");
}
int main(int argc,char*argv[]){
if(argc!=3){
printf("Usage: program <Length(byte)> <Integer number>\n");
exit(1);
}
unsigned char n;
cv2bin(n);//2進数に変換
return 0;
}
関数cv2binはきちんとビット演算を用いているといえるでしょうか?
コマンドライン引数からの2つの値を'unsigned n'にsscanfを用いて代入するにはどうすればよいでしょうか?