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

📄 look.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include <stdio.h>#include <ctype.h>FILE *dfile;char *filenam  = "/usr/dict/words";int fold;int dict;int tab;char entry[250];char word[250];char key[50];main(argc,argv)char **argv;{	register c;	long top,bot,mid;	while(argc>=2 && *argv[1]=='-') {		for(;;) {			switch(*++argv[1]) {			case 'd':				dict++;				continue;			case 'f':				fold++;				continue;			case 't':				tab = argv[1][1];				if(tab)					++argv[1];				continue;			case 0:				break;			default:				continue;			}			break;		}		argc --;		argv++;	}	if(argc<=1)		return;	if(argc==2) {		fold++;		dict++;	} else		filenam = argv[2];	dfile = fopen(filenam,"r");	if(dfile==NULL) {		fprintf(stderr,"look: can't open %s\n",filenam);		exit(2);	}	canon(argv[1],key);	bot = 0;	fseek(dfile,0L,2);	top = ftell(dfile);	for(;;) {		mid = (top+bot)/2;		fseek(dfile,mid,0);		do {			c = getc(dfile);			mid++;		} while(c!=EOF && c!='\n');		if(!getword(entry))			break;		canon(entry,word);		switch(compare(key,word)) {		case -2:		case -1:		case 0:			if(top<=mid)				break;			top = mid;			continue;		case 1:		case 2:			bot = mid;			continue;		}		break;	}	fseek(dfile,bot,0);	while(ftell(dfile)<top) {		if(!getword(entry))			return;		canon(entry,word);		switch(compare(key,word)) {		case -2:			return;		case -1:		case 0:			puts(entry,stdout);			break;		case 1:		case 2:			continue;		}		break;	}	while(getword(entry)) {		canon(entry,word);		switch(compare(key,word)) {		case -1:		case 0:			puts(entry,stdout);			continue;		}		break;	}}compare(s,t)register char *s,*t;{	for(;*s==*t;s++,t++)		if(*s==0)			return(0);	return(*s==0? -1:		*t==0? 1:		*s<*t? -2:		2);}getword(w)char *w;{	register c;	for(;;) {		c = getc(dfile);		if(c==EOF)			return(0);		if(c=='\n')			break;		*w++ = c;	}	*w = 0;	return(1);}canon(old,new)char *old,*new;{	register c;	for(;;) {		*new = c = *old++;		if(c==0||c==tab) {			*new = 0;			break;		}		if(dict) {			if(!isalnum(c))				continue;		}		if(fold) {			if(isupper(c))				*new += 'a' - 'A';		}		new++;	}}

⌨️ 快捷键说明

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