#!/usr/bin/env cscript #include #include #include #include #define ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ" int scan_column_index(char column_index[3 + 1], int *index) { const char *needle; *index = 0; for (needle = column_index; *column_index != '\0'; column_index++) { *index *= 'Z' - 'A' + 1; *index += strchr(ALPHABET, *column_index) - ALPHABET; } } int sprint_column_index(char column_index[3 + 1], int index) { char *needle; for (needle = &column_index[0]; index > 0; needle++, index /= 'Z' - 'A' + 2) { *needle = 'A' + (index % ('Z' - 'A' + 1)); } *needle = '\0'; } 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; }