私は課題に取り組んでおり、部分的に解決しています。現在、正しい出力が得られていますが、逆にのみです。
実装したヘルパー関数は次のとおりです。
char int2char (int radix, int value) {
char c = '?';
if ((value >= 0 && value < radix) && (radix <= 36 && radix >= 2)){
if (value < 10){
c = value + 48;
}
else if (value >= 10 && value < 36) {
c = value + 55;
}
}
return c;
}
そして、私が苦労している実際の機能は、これまでのところ次のようになっています。
void int2str (int radix, int value) {
int result = value % radix;
int division = value / radix;
char c;
c = int2char(radix, result);
putchar(c);
while (division > 0) {
return int2str(radix, division);
}
}
最初の関数は、10 ~ 35 の数字を 16 進数で表すために使用されます。たとえば、モジュラスが 11 を生成する場合、「B」を出力することになっています。
後方を除いて、これはうまく機能しています!そして、私はそれを逆にする方法を理解できません。最大の問題は、出力として putchar() しか使用できないことです。文字列も配列もありません。
さらに明確にするために、次のように入力すると:
int2str 16 60
出力は「3C」であるはずですが、代わりに「C3」を取得しています。