#include #include #include #include #include int strcoll_cmp (const void *c1, const void *c2) { return strcoll(c1, c2); } int main() { unsigned int i, j; unsigned char *lines; char buf[100]; unsigned int cnt = 0; setlocale(LC_ALL, ""); lines = (unsigned char *) malloc(3*256*256); for (i = 33; i < 256; i++) { lines[3*cnt] = i; lines[3*cnt+1] = '\0'; strxfrm(buf, (char *) (lines+3*cnt), 10); /* Ignore ignorable and non-alphanumeric characters. */ if (buf[0] == 1 || !isalpha(i)) continue; for (j = 33; j < 256; j++) { lines[3*cnt+1] = j; lines[3*cnt+2] = '\0'; strxfrm(buf, (char *) (lines+3*cnt+1), 10); if (buf[0] == 1 || !isalpha(j)) continue; cnt++; lines[3*cnt] = i; } } qsort (lines, cnt, 3, strcoll_cmp); for (i = 0; i < cnt; i++) printf ("\n", lines[3*i], lines[3*i+1]); return 0; }