/* Compare to arg8.c. */ /* Also compare to your answer to assignment 3. */ void printstring(char *x) { while (*x) putchar(*x++); } /* 1 if the string s is larger than the string t; 0 otherwise. */ int strlarger(char *s,char *t) { for (;;) { if (!*s) return 0; if (!*t) return 1; if (*s > *t) return 1; if (*s < *t) return 0; ++s; ++t; } } /* 1 if the name p[0] p[1] is smaller than the name q[0] q[1]; 0 otherwise. */ int namesmaller(char *p[2],char *q[2]) { if (strlarger(q[1],p[1])) return 1; if (strlarger(p[1],q[1])) return 0; if (strlarger(q[0],p[0])) return 1; return 0; } int main(int argc,char **argv) { int i; int smallest; while (argc > 2) { smallest = 1; for (i = 3;i + 1 < argc;i += 2) if (namesmaller(argv + i,argv + smallest)) smallest = i; printstring(argv[smallest]); printstring(" "); printstring(argv[smallest + 1]); printstring("\n"); argc -= 2; argv[smallest] = argv[argc]; argv[smallest + 1] = argv[argc + 1]; } return 0; }