#!/usr/bin/env cscript #include #include void rxPos(int n, char *buf) { int m, address_length; const char *ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char character, *address_needle, address[1 + 3]/* XFD が最大の列コードである。 */; for (address_length = 0, m = n; m > 0; m /= strlen(ALPHABET), address_length++); for (m = n - 1, address_needle = address; m >= 0; m /= strlen(ALPHABET), m -= 1) { *address_needle++ = 'A' + m % strlen(ALPHABET); } if (address_needle > &address[strlen(address)]) { puts("ouch"); } *++address_needle = '\0'; switch (address_length) { case 2: character = address[0]; address[0] = address[1]; address[1] = character; break; case 3: character = address[2]; address[2] = address[0]; address[0] = character; break; } strcpy(buf, address); } int main(int argc, char *argv[]) { char address[1 + 3]; //rxPos(675, address); //printf("%s\n", address); rxPos(676, address); printf("[%s]\n", address); return 0; }