2016-07-16 3 views
2

私はバイナリ/ 16進数の電卓を作っていますが、ユーザーが8桁の16進数を挿入し、バイナリに変換し、それを次の操作で印刷する必要があります。私の問題は、配列の16進数を読み込んでそれを変換して別の配列に格納しようとすると、奇妙なキャラクタ(V <#■jst)tt)配列で連続して書く方法

これは私のコード:

#include <stdio.h> 
    #include <stdlib.h> 
    #include <math.h> 
    #include <float.h> 
    #include <proyecto.h> 
    #include <string.h> 
    int main() { 
     char op,bin[31],hex[100],hex2[100]; 
     int sizeh,repeat1,repeat2,n,z,i; 
     printf("Hexadecimal: "); 
     scanf("%s",hex); 
     convert(hex,bin,n); 

コンバート機能:

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <float.h> 
#include <proyecto.h> 
#include <string.h> 
void convert(char hex[],char bin[],int n){ 
int i,b; 
printf("\nEquivalent binary value: "); 
for(i=0;i<8;i++){ 
switch(hex[i]){ 
case '0': scanf("0000",bin); break; 
case '1': scanf("0001",bin); break; 
case '2': scanf("0010",bin); break; 
case '3': scanf("0011",bin); break; 
case '4': scanf("0100",bin); break; 
case '5': scanf("0101",bin); break; 
case '6': scanf("0110",bin); break; 
case '7': scanf("0111",bin); break; 
case '8': scanf("1000",bin); break; 
case '9': scanf("1001",bin); break; 
case 'A': scanf("1010",bin); break; 
case 'B': scanf("1011",bin); break; 
case 'C': scanf("1100",bin); break; 
case 'D': scanf("1101",bin); break; 
case 'E': scanf("1110",bin); break; 
case 'F': scanf("1111",bin); break; 
case 'a': scanf("1010",bin); break; 
case 'b': scanf("1011",bin); break; 
case 'c': scanf("1100",bin); break; 
case 'd': scanf("1101",bin); break; 
case 'e': scanf("1110",bin); break; 
case 'f': scanf("1111",bin); break; 
default: printf("\nInvalid hexadecimal digit %c ",hex[i]); 
} 
} 
printf("%s",bin); 
} 

機能のポイントは、バイナリ配列に継続的に文字を書くことですので、私はABを入力した場合、配列は、最初の1010を挿入し、中になりますポジション5は1011を書き続けますが、何とか私はいけません。それを動作させるには

+0

あなたはscanf'はない 'どう思いますか? – immibis

答えて

1

scanf("0000",bin);strcat(bin, "0000");などに変更できます。この方法は面倒であり、binは、例えば、十分な大きさと空の文字列に初期化されなければならないこと 注:

char bin[33] = ""; 
+0

好奇心を離れて、なぜその質問は答えるのに十分だと思いましたが、アップアップしないと思いましたか? – user1717828

+0

@ user1717828:私はそれをするのを忘れました。インデントの欠如は確かにオフになります;-) – chqrlie

関連する問題