📄 prep.c
字号:
/* prep - prepare file for statistics Author: Andy Tanenbaum */#include <ctype.h>#include <stdlib.h>#include <stdio.h>#define TROFF_CHAR '.' /* troff commands begin with this char */#define EOL '\n' /* end of line char */#define APOSTROPHE 047 /* single quote */#define BACKSLASH '\\' /* troff code */int lfread; /* set when last char read was lf */int lfwritten = 1; /* set when last char written was lf */_PROTOTYPE(int main, (int argc, char **argv));_PROTOTYPE(void skipline, (void));_PROTOTYPE(int backslash, (void));_PROTOTYPE(void usage, (void));int main(argc, argv)int argc;char *argv[];{ int c; if (argc > 2) usage(); if (argc == 2) { if (freopen(argv[1], "r", stdin) == NULL) { printf("prep: cannot open %s\n", argv[1]); exit(1); } } while ((c = getchar()) != EOF) { /* Lines beginning with "." are troff commands -- skip them. */ if (lfread && c == TROFF_CHAR) { skipline(); continue; } while (c == BACKSLASH) c = backslash(); /* eat troff stuff */ if (isupper(c)) { putchar(tolower(c)); lfwritten = 0; lfread = 0; continue; } if (islower(c)) { putchar(c); lfwritten = 0; lfread = 0; continue; } if (c == APOSTROPHE) { putchar(c); lfwritten = 0; lfread = 0; continue; } lfread = (c == EOL ? 1 : 0); if (lfwritten) continue; putchar(EOL); lfwritten = 1; } return(0);}void skipline(){ char c; while ((c = getchar()) != EOL);}int backslash(){/* A backslash has been seen. Eat troff stuff. */ int c, c1, c2; c = getchar(); switch (c) { case 'f': c = getchar(); c = getchar(); return(c); case 's': /* \s7 or \s14 */ c = getchar(); c = getchar(); if (isdigit(c)) c = getchar(); return(c); case 'n': /* \na or \n(xx */ c = getchar(); if (c == '(') { c = getchar(); c = getchar(); } c = getchar(); return(c); case '*': /* / * (XX */ c = getchar(); if (c == '(') { c = getchar(); c = getchar(); c = getchar(); return(c); } case '(': /* troff 4-character escape sequence */ c1 = getchar(); c2 = getchar(); if (c1 == 'e' && c2 == 'm') return(' '); if (c1 == 'e' && c2 == 'n') return(' '); c = getchar(); return(c); case '%': /* soft hyphen: \% */ c = getchar(); return(c); default: return(c); }}void usage(){ printf("Usage: prep [file]\n"); exit(1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -