|
|
1.1 ! root 1: /* ! 2: * Reverse the order of the characters ! 3: * in every line of every file (or the ! 4: * standard input if no files are given). ! 5: */ ! 6: ! 7: #include <stdio.h> ! 8: ! 9: #define MAXLINE 1000 ! 10: ! 11: main(argc, argv) ! 12: char *argv[]; ! 13: { ! 14: FILE *fp; ! 15: register int i; ! 16: ! 17: if (argc < 2) ! 18: rev(stdin); ! 19: else for (i=1; i<argc; i++) ! 20: if ((fp = fopen(argv[i], "r")) == NULL) ! 21: fprintf(stderr, "Cannot open `%s'\n", argv[i]); ! 22: else { ! 23: rev(fp); ! 24: fclose(fp); ! 25: } ! 26: exit(0); ! 27: } ! 28: ! 29: /* ! 30: * Reverse the characters in every ! 31: * line of the file described by ! 32: * the given I/O stream. ! 33: */ ! 34: rev(stream) ! 35: FILE *stream; ! 36: { ! 37: register char *ep; ! 38: register c; ! 39: static char line[MAXLINE]; ! 40: ! 41: do { ! 42: ep = line; ! 43: while ((c=getc(stream))!='\n' && c!=EOF) ! 44: *ep++=c; ! 45: while (ep > line) ! 46: putchar(*--ep); ! 47: if (c=='\n') ! 48: putchar('\n'); ! 49: } while (c != EOF); ! 50: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.