📄 inv6.c
字号:
#ifndef lintstatic char *sccsid = "@(#)inv6.c 4.1 ULTRIX 7/17/90";/* Original Id: "@(#)inv6.c 4.2 (Berkeley) 1/9/85" */#endif#include <stdio.h>#include <assert.h>whash(ft, fa, fb, nhash, iflong, ptotct, phused)FILE *fa, *fb, *ft;int nhash, *phused;long *ptotct;{ char line[100]; int hash = 0, hused = 0; long totct = 0L; int ct = 0; long point; long opoint = -1; int m; int k; long lp; long *hpt; int *hfreq; hpt = (long *) calloc (nhash+1, sizeof(*hpt)); assert (hpt != NULL); hfreq = (int *) calloc (nhash, sizeof(*hfreq)); assert (hfreq != NULL); hpt[0] = 0; lp= 0; while (fgets(line, 100, ft)) { totct++; sscanf(line, "%d %ld", &k, &point); if (hash < k) { hused++; if (iflong) putl(-1L, fb); else putw(-1, fb); hfreq[hash]=ct; while (hash<k) { hpt[++hash] = lp; hfreq[hash] = 0; } hpt[hash] = lp += iflong? sizeof(long) : sizeof(int); opoint= -1; ct=0; } if (point!=opoint) { if (iflong) putl(opoint=point, fb); else putw( (int)(opoint=point), fb); lp += iflong? sizeof(long) : sizeof(int); ct++; } } if (iflong) putl(-1L, fb); else putw(-1,fb); while (hash<nhash) hpt[++hash]=lp; fwrite(&nhash, sizeof(nhash), 1, fa); fwrite(&iflong, sizeof(iflong), 1, fa); fwrite(hpt, sizeof(*hpt), nhash, fa); fwrite (hfreq, sizeof(*hfreq), nhash, fa); *ptotct = totct; *phused = hused;}putl(ll, f)long ll;FILE *f;{ putw(ll, f);}longgetl(f)FILE *f;{ return(getw(f));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -