#include #include #include int main() { char *data; char *start; size_t malloclen = 8; int postz = 'z'+1; int prea = 'a'-1; data = malloc(malloclen); *data = 0; *(data+1) = 0; size_t datalen = 1; while (1) { if (datalen > malloclen - 1) { char *newdata = data; malloclen*=2; newdata = malloc(malloclen); memset(newdata, 0, malloclen); memcpy(newdata, data, strlen(data)); data = newdata; } start = data; while (1) { if ( *start == 0 ) { *start='a'; datalen++; goto wrapup; } (*start)++; if ( *start == postz) *(start++) = 'a'; else break; } wrapup: printf("%s\n", data); } }