📄 flagger.c
字号:
#ifndef lintstatic char *sccsid = "@(#)flagger.c 4.1 (Berkeley) 5/6/83";#endif#include <stdio.h>char wds[100][40];int synwd[100];int mark[100];int justw = 0;extern int comcount;int blank[100];int wdp, wdf;int bl;int sargc; char **sargv;FILE *inf;main(argc,argv)char *argv[];{ int i; while (--argc && **++argv== '-') switch(argv[0][1]) { case 'w': justw=1; break; case 'c': comcount=atoi(argv[0]+2); break; } wdp=wdf=0; if (argc>0) { argc--; inf = fopen(argv[0], "r"); if (inf==NULL) exit(0); argv++; } else inf=stdin; sargc=argc; sargv= argv; while ( gw (wds[wdp = next(wdp)], &bl)) { blank[wdp] = bl; mark[wdp]=0; synwd[wdp] = common(upcase(wds[wdp])); if (common(sstrip(upcase(wds[wdp])))) synwd[wdp]=1; if (allpunct(wds[wdp])) synwd[wdp]=1; if (strlen(wds[wdp])<3) synwd[wdp]=1; if (synwd[wdp]==1) { for(i=wdp; i!=wdf; i=prev(i)) { if (synwd[i]>0) continue; mark[i]=1; break; } } } if (wdp<0) return(0); i=wdf -1; i = next(i); while (i != wdp) i= next(i);}next(i){ int j; j = (i+1) % 100; if (j==wdf) { if (justw==0) { if (mark[j] ) putchar('*'); printf("%s",wds[j]); if (blank[j]) putchar(' '); } else if (mark[j]) printf("%s\n", wds[j]); wdf = (wdf+1)%100; } return(j);}prev(i){ i = (i-1)%100; return(i);}allpunct(s)char *s;{ int c; while (c = *s++) if (isalpha(c)) return(0); return(1);}gw(s, b)char *s;int *b;{ int c, type, nt; c = getc(inf); while (c==EOF) { fclose(inf); inf=NULL; if (sargc-->0) { inf = fopen ( *sargv++, "r"); } if (inf==NULL) return(0); c = getc(inf); } *s++ = c; type = isalpha(c) || isdigit(c); while ( (c = getc(inf)) != EOF ) { nt = isalpha(c) || isdigit(c); if (nt==type) *s++= c; else break; } *s=0; if (c== ' ') { *b = 1; return(1); } while (c==EOF) { fclose(inf); inf=NULL; if (sargc-- > 0) { inf= fopen( *sargv++, "r"); } if (inf==NULL) return(0); c = getc(inf); } ungetc(c, inf); *b=0; return(1);}trimnl(s)char *s;{ while (*s) s++; if (*--s=='\n') *s=0;}upcase(s)char *s;{ static char buf[100]; strcpy (buf, s); for(s=buf; *s; s++) if (isupper(*s)) *s = *s-'A'+'a'; return(buf);}sstrip(s)char *s;{ char *p ; p=s; while (*s) s++; if (*--s=='s') *s=0; return(p);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -