2012-02-01 8 views
0

10進数を任意の基数(2〜36)に変換し、適切な文字を画面に出力するメソッドを作成しています。 decimalToSymbol()メソッドが正しく機能します。私が抱えている問題は、ループでans[i]charに割り当てて、それが0の直後に印刷しようとしたときです。私はオンラインで見て、これはcharを割り当てるための正しい方法だが、何がうまくいかないかはわかりません。Cで文字配列を操作する

void writeRadixB(int decimalNumber, int radixB) 
{ 
     char ans[80] = ""; 
     int i = 0; 
     while(decimalNumber!= 0){ 
       printf("decNum: %d div by rB: %d equals %d\n", decimalNumber, radixB, decimalN 
       printf("decNum: %d mod by rB: %d equals %d or char %c\n", decimalNumber, radix 
       printf("i: %d\n", i); 
       decimalNumber = decimalNumber/radixB; 
       ans[i] = decimalToSymbol(decimalNumber%radixB); 
       printf("ans[%d] is %c\n", i, ans[i]); 
       i++; 
     } 
     printf("(%s) radix %d", ans, radixB); 
} 
+0

渡している値の例を挙げることはできますか?また、毎回最後の桁を割り算する前にモジュラスを実行してはいけませんか? – FatalError

+0

私はFatalErrorに同意し、作成した文字列で数字が逆順に並べられることにも注意したい。 – Nobody

+1

decimalToSymbolメソッドが正しく動作することをどのように知っていますか?また、あなたの文字列をnullで終わらせてください。 'ans [i] = '\ 0';あなたが印刷する前に1。 – RussS

答えて

0

decimalNumber = decimalNumber/radixB;の前に行ans[i] = decimalToSymbol(decimalNumber%radixB);を置いてください(数字を失わないように)。また、文字列を印刷する前にその文字列を反転したいと思うかもしれません。

+0

これは私の問題だった、ありがとう。すぐに文字列を後方に印刷する必要があります – tubby

1

数字を抽出した後までdecimalNumberを変更しないでください。それがあなたの結果です。