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

📄 strings.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include	<u.h>#include 	<libc.h>#include	<bio.h>Biobuf	*fin;Biobuf	fout;#define	MINSPAN		6		/* Min characters in string */#define BUFSIZE		70void stringit(char *);int isprint(Rune);voidmain(int argc, char **argv){	int i;	Binit(&fout, 1, OWRITE);	if(argc < 2) {		stringit("/fd/0");		exits(0);	}	for(i = 1; i < argc; i++) {		if(argc > 2)			print("%s:\n", argv[i]);		stringit(argv[i]);	}	exits(0);}voidstringit(char *str){	long posn, start;	int cnt = 0;	long c;	Rune buf[BUFSIZE];	if ((fin = Bopen(str, OREAD)) == 0) {		perror("open");		return;	}	start = 0;	posn = Boffset(fin);	while((c = Bgetrune(fin)) >= 0) {		if(isprint(c)) {			if(start == 0)				start = posn;			buf[cnt++] = c;			if(cnt == BUFSIZE-1) {				buf[cnt] = 0;				Bprint(&fout, "%8ld: %S ...\n", start, buf);				start = 0;				cnt = 0;			}		} else {			 if(cnt >= MINSPAN) {				buf[cnt] = 0;				Bprint(&fout, "%8ld: %S\n", start, buf);			}			start = 0;			cnt = 0;		}			posn = Boffset(fin);	}	if(cnt >= MINSPAN){		buf[cnt] = 0;		Bprint(&fout, "%8ld: %S\n", start, buf);	}	Bterm(fin);}intisprint(Rune r){	if (r != Runeerror)	if ((r >= ' ' && r < 0x7F) || r > 0xA0)		return 1;	return 0;}

⌨️ 快捷键说明

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