コマンドライン引数に最初に 1 か 2 を,次に 1 なら10進数, 2 なら2進数の数字の文字列を複数指定し,以下のように10 進数の数値にして印字したいです。
< 実行例>
./sample 2 1100 111⏎
1100B = 12
111B = 7
./sample 1 1234 56789⏎
1234 = 1234
56789 = 56789
自分のコードで以下のように実行すると、以下のようになってしまいます。
./sample 1 1234 5678
1234 = 6562
5678 = 11006
./sample 2 1100 111
1100B = 348
111B = 151
色々試した結果str_to_dec,bin_to_decには問題がないと思われます。
訂正箇所を教えでいただけるとありがたいです。
C
1コード 2#include <stdio.h> 3 int str_to_dec(const char s[]){ 4 x1 = s[0] - '0'; 5 for( i = 1; s[i] != '\0'; i++ ){ 6 x2 = s[i] - '0'; 7 x1 = 10 * x1 + x2; 8 } 9 return x1; 10 } 11 int bin_to_dec(const char s[]){ 12 x1 = s[0] - '0'; 13 for( i = 1; s[i] != '\0'; i++ ){ 14 x2 = s[i] - '0'; 15 x1 = 2* x1 + x2; 16 } 17 return x1; 18 } 19 int main(int argc, char *argv[]) { 20 int i; 21 /*引数が2つ以上指定されていなかった場合 */ 22 if(argc <= 2){ 23 fprintf( stderr, "usage: %s [1 or 2] [binary numbers]¥n", argv[0] ); 24 return 1; 25 } 26 switch( argv[1][0] ){ 27 case '1': 28 for(i = 2;i<argc;i++) 29 printf("%s = %d\n",argv[i],str_to_dec(argv[i])); 30 break; 31 case '2'; 32 for(i = 2;i<argc;i++) 33 printf("%sB= %d\n",argv[i],bin_to_dec(argv[i])); 34 break; 35 default : 36 break; 37 } 38 return 0; 39} 40 41
回答1件
あなたの回答
tips
プレビュー