#!/usr/bin/env cscript #include #include #include #include int scan_column_index(char column_index[3 + 1], int *index) { char *needle; *index = 0; for (needle = &column_index[strlen(column_index) - 1]; needle >= column_index; needle--) { *index *= 'Z' - 'A' + 1; *index += *needle - 'A'; } return 0; } int sprint_column_index(char column_index[3 + 1], int index) { char *needle; // 仕様で XFD が最大の列と定められている。 bzero(column_index, sizeof(column_index)); for (needle = column_index; index > 0; needle++) { *needle = 'A' + index % ('Z' - 'A' + 1) -; index /= 'Z' - 'A' + 1; } } int main(int argc, char *argv[]) { int position; char column_index[3 + 1]; strcpy(column_index, "A"); for (int index = 0; index <= 128; index++) { scan_column_index(column_index, &position); position += 1; sprint_column_index(column_index, position); printf("[%s] %d\n", column_index, position); } return 0; }