ぼるじょあがC/C++の宿題を片づけますYO! 47代目
■ このスレッドは過去ログ倉庫に格納されています
0176167
2005/07/07(木) 00:17:02新しく確保するよりバッファを渡す方がCらしいわな。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char* to_radix_n(unsigned int x, char* s, int n) {
int index = 0, left = 0, digit;
char temp;
do {
digit = x % n;
s[index++] = digit > 9 ? digit - 10 + 'A' : digit + '0';
} while (x /= n);
s[index--] = '\0';
while (left < index) {
temp = s[left];
s[left++] = s[index];
s[index--] = temp;
}
return s;
}
unsigned int from_radix_n(char* s, int n) {
unsigned int x = 0, i, len;
for (i = 0, len = strlen(s); i < len; i++) (x *= n) += isdigit(s[i]) ? s[i] - '0' : toupper(s[i]) - 'A' + 10;
return x;
}
int main(void) {
char s1[256], s2[256];
printf("Enter Number:"); scanf("%255s", s1);
printf("%s(16) = %s(2)\n", s1, to_radix_n(from_radix_n(s1, 16), s2, 2));
printf("Enter Number:"); scanf("%255s", s1);
printf("%s(16) = %s(2)", s1, to_radix_n(from_radix_n(s1, 2), s2, 16));
}
■ このスレッドは過去ログ倉庫に格納されています