⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inv2.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char *sccsid = "@(#)inv2.c	4.1 (Berkeley) 5/6/83";#endif#include <stdio.h>#include <assert.h>#define LINESIZ 1250newkeys (outf, inf, recf, nhash, fd, iflong)FILE *outf, *inf, *recf, *fd;int *iflong;{	/* reads key lines from inf; hashes and writes on outf;	 * writes orig key on recf, records pointer on outf too.	 * format of outf is : hash code space record pointer	 */	long lp, ftell();	long ld = 0; 	int ll = 0, lt = 0;	char line[LINESIZ];	char key[30], bkeys[40];	char *p, *s;	char *keyv[500];	int i, nk, ndoc = 0, more = 0, c;	lp = ftell (recf);	while (fgets(line, LINESIZ, inf))	{		p = line;		while (*p != '\t') p++;		*p++ =0;		fputs(line, recf);		if (fd)		{			sprintf(bkeys, ";%ld", ld);			ll = strlen(p);			lt = strlen(bkeys);			fputs(bkeys, recf);			sprintf(bkeys, ",%d", ll);			lt += strlen(bkeys);			fputs(bkeys, recf);			ld += ll;			fputs(p, fd);		}		putc('\n',recf);		for(s=p; *s; s++);		if (*--s == '\n')		{			more=0;			*s=0;		}		else			more=1;		assert (fd==0 || more==0);		nk = getargs(p, keyv);		if (more)			nk--;		for(i=0; i<nk; i++)			fprintf(outf,"%04d %06ld\n",hash(keyv[i])%nhash, lp);# if D1		for(i=0; i<nk; i++)			printf("key %s hash %d\n",keyv[i],hash(keyv[i])%nhash);# endif		if (more) /* allow more than LINESIZ keys */		{			strcpy(key, keyv[nk]);			for(s=key; *s; s++);			while ( (c=getc(inf)) != '\n')			{				if (c != ' ')				{					*s++ = c;					continue;				}				*s=0;				if (s>key)					fprintf(outf, "%04d %06ld\n",hash(key)%nhash, lp);				s = key;			}		}		lp += (strlen(line)+lt+1);		ndoc++;	}	*iflong = (lp>=65536L);	if (sizeof(int)>2) *iflong=1; /* force long on VAX */	fclose(recf);	return(ndoc);}trimnl(p)char *p;{	while (*p) p++;	p--;	if (*p == '\n') *p=0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -