📄 thash.c
字号:
# include "stdio.h"int nh 500;int saw[6000];char *comname "/usr/lib/eign";main (argc,argv) char *argv[];{int i, z;char *name;FILE *f;while (argc>1 && argv[1][0] == '-') { switch(argv[1][1]) { case 'h': nh = atoi(argv[1]+2); break; } argc--; argv++; }if (argc<=1) dofile(stdin, "");elsefor(i=1; i<argc; i++) { f = fopen(name=argv[i], "r"); if (f==NULL) err("No file %s",name); else dofile(f, name); }for(z=i=0; i<nh; i++) { if (saw[i]) z++; }printf("hashes %d used %d\n",nh,z);}# include "stdio.h"dofile(f, name) FILE *f; char *name;{/* read file f & spit out keys & ptrs */# define MAXLINE 750char line[MAXLINE], *s;char key[20], *p;int k 0;int c, lim;int alph 0;int used 0;long lp 0;while (fgets(line, MAXLINE, f)) { k++; used=alph=0; lim = strlen(line); p = key; for(s=line; c= *s; s++) { if (isalpha(c) || isdigit(c)) { if (alph++ < 6) *p++ = c; } else { *p = 0; if (outkey(p=key)) { tkey(key,k); used=1; } alph=0; } } lp += lim; }}outkey( ky) char *ky;{ int n;n = strlen(ky);if (n<3) return(0);if (isdigit(ky[0])) if (ky[0] != '1' || ky[1] != '9' || n!= 4) return(0);return(1);}# include "stdio.h"hash (s) char *s;{int c, n, q;for(q=n=0; c= *s; s++) n += (c*n + c << (n%4));return(n);}err (s, a) char *s;{fprintf(stderr, "Error: ");fprintf(stderr, s, a);putc('\n', stderr);}prefix(t, s) char *t, *s;{int c, d;while ( (c= *t++) == *s++) if (c==0) return(1);return(c==0 ? 1: 0);}mindex(s, c) char *s;{register char *p;for( p=s; *p; p++) if (*p ==c) return(p);return(0);}tkey(s,nw) char *s;{int x;x = abs(hash(s)) % nh;/* if (saw[x]) printf("%d %d\n", x, nw); */saw[x]= nw;}abs(n){return(n>0 ? n : -n);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -