|
|
1.1 ! root 1: #include <stdio.h> ! 2: #define NITEMS 512 ! 3: #define MAXLEN 256 ! 4: ! 5: char *data[NITEMS]; ! 6: char string[MAXLEN]; ! 7: ! 8: main() ! 9: { ! 10: register char **cpp; ! 11: register int count; ! 12: extern int compare(); ! 13: extern char *malloc(); ! 14: extern char *gets(); ! 15: ! 16: for (cpp = &data[0]; cpp < &data[NITEMS]; cpp++) { ! 17: if (gets(string) == NULL) ! 18: break; ! 19: if ((*cpp = malloc(strlen(string) + 1)) == NULL) ! 20: exit(1); ! 21: strcpy(*cpp, string); ! 22: } ! 23: ! 24: count = cpp - &data[0]; ! 25: qsort(data, count, sizeof(char *), compare); ! 26: ! 27: for (cpp = &data[0]; cpp < &data[count]; cpp++) { ! 28: printf("%s\n", *cpp); ! 29: free(*cpp); ! 30: } ! 31: exit(0); ! 32: } ! 33: ! 34: compare(p1, p2) ! 35: register char **p1, **p2; ! 36: { ! 37: extern int strcmp(); ! 38: return(strcmp(*p1, *p2)); ! 39: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.