//Copyright Matthias Jauernig, 2004 #include #include #include #define MAX_CH 100 void quicksort(char **a, int l, int r){ if(r>l){ int i=l-1, j=r; char *tmp; for(;;){ while(strncmp(a[++i],a[r],MAX_CH)<0); while(strncmp(a[--j],a[r],MAX_CH)>0 && j>i); if(i>=j) break; tmp=a[i]; a[i]=a[j]; a[j]=tmp; } tmp=a[i]; a[i]=a[r]; a[r]=tmp; quicksort(a, l, i-1); quicksort(a, i+1, r); } } int main(void){ char zeichen; char **stringfeld=NULL; int laenge=0, strings=0, i; char tmp[MAX_CH]; while((zeichen=getchar())!=EOF){ if(laenge>=MAX_CH) return -1; switch(zeichen){ case '\n': case ' ' : case '\t': if(laenge>0){ tmp[laenge]='\0'; stringfeld=(char**)realloc(stringfeld,(strings+1)*sizeof(char*)); stringfeld[strings]=(char*)malloc(laenge+1); strcpy(stringfeld[strings++],tmp); laenge=0; } break; default: tmp[laenge]=zeichen; laenge++; } } quicksort(stringfeld,0,strings-1); for(i=0; i