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

📄 ascii.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#define	MAXBASE	36void	usage(void);void	put(int);void	putn(int, int);void	puttext(char *);void	putnum(char *);int	btoi(char *);int	value(int, int);int	isnum(char *);char *str[256]={	"nul",	"soh",	"stx",	"etx",	"eot",	"enq",	"ack",	"bel",	"bs ",	"ht ",	"nl ",	"vt ",	"np ",	"cr ",	"so ",	"si ",	"dle",	"dc1",	"dc2",	"dc3",	"dc4",	"nak",	"syn",	"etb",	"can",	"em ",	"sub",	"esc",	"fs ",	"gs ",	"rs ",	"us ",	"sp ",	" ! ",	" \" ",	" # ",	" $ ",	" % ",	" & ",	" ' ",	" ( ",	" ) ",	" * ",	" + ",	" , ",	" - ",	" . ",	" / ",	" 0 ",	" 1 ",	" 2 ",	" 3 ",	" 4 ",	" 5 ",	" 6 ",	" 7 ",	" 8 ",	" 9 ",	" : ",	" ; ",	" < ",	" = ",	" > ",	" ? ",	" @ ",	" A ",	" B ",	" C ",	" D ",	" E ",	" F ",	" G ",	" H ",	" I ",	" J ",	" K ",	" L ",	" M ",	" N ",	" O ",	" P ",	" Q ",	" R ",	" S ",	" T ",	" U ",	" V ",	" W ",	" X ",	" Y ",	" Z ",	" [ ",	" \\ ",	" ] ",	" ^ ",	" _ ",	" ` ",	" a ",	" b ",	" c ",	" d ",	" e ",	" f ",	" g ",	" h ",	" i ",	" j ",	" k ",	" l ",	" m ",	" n ",	" o ",	" p ",	" q ",	" r ",	" s ",	" t ",	" u ",	" v ",	" w ",	" x ",	" y ",	" z ",	" { ",	" | ",	" } ",	" ~ ",	"del",	"x80",	"x81",	"x82",	"x83",	"x84",	"x85",	"x86",	"x87",	"x88",	"x89",	"x8a",	"x8b",	"x8c",	"x8d",	"x8e",	"x8f",	"x90",	"x91",	"x92",	"x93",	"x94",	"x95",	"x96",	"x97",	"x98",	"x99",	"x9a",	"x9b",	"x9c",	"x9d",	"x9e",	"x9f",	"xa0",	" ¡ ",	" ¢ ",	" £ ",	" ¤ ",	" ¥ ",	" ¦ ",	" § ",	" ¨ ",	" © ",	" ª ",	" « ",	" ¬ ",	" ­ ",	" ® ",	" ¯ ",	" ° ",	" ± ",	" ² ",	" ³ ",	" ´ ",	" µ ",	" ¶ ",	" · ",	" ¸ ",	" ¹ ",	" º ",	" » ",	" ¼ ",	" ½ ",	" ¾ ",	" ¿ ",	" À ",	" Á ",	" Â ",	" Ã ",	" Ä ",	" Å ",	" Æ ",	" Ç ",	" È ",	" É ",	" Ê ",	" Ë ",	" Ì ",	" Í ",	" Î ",	" Ï ",	" Ð ",	" Ñ ",	" Ò ",	" Ó ",	" Ô ",	" Õ ",	" Ö ",	" × ",	" Ø ",	" Ù ",	" Ú ",	" Û ",	" Ü ",	" Ý ",	" Þ ",	" ß ",	" à ",	" á ",	" â ",	" ã ",	" ä ",	" å ",	" æ ",	" ç ",	" è ",	" é ",	" ê ",	" ë ",	" ì ",	" í ",	" î ",	" ï ",	" ð ",	" ñ ",	" ò ",	" ó ",	" ô ",	" õ ",	" ö ",	" ÷ ",	" ø ",	" ù ",	" ú ",	" û ",	" ü ",	" ý ",	" þ ",	" ÿ "};char Ncol[]={    0,0,7,5,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,};int 	nchars=128;int 	base=16;int 	ncol;int 	text=1;int	strip=0;Biobuf	bin;voidmain(int argc, char **argv){	int i;	Binit(&bin, 1, OWRITE);	ARGBEGIN{	case '8':		nchars=256; break;	case 'x':		base=16; break;	case 'o':		base=8; break;	case 'd':		base=10; break;	case 'b':		base=strtoul(EARGF(usage()), 0, 0);		if(base<2||base>MAXBASE)			usage();		break;	case 'n':		text=0; break;	case 't':		strip=1;		/* fall through */	case 'c':		text=2; break;	default:		usage();	}ARGEND	ncol=Ncol[base];	if(argc==0){		for(i=0;i<nchars;i++){			put(i);			if((i&7)==7)				Bprint(&bin, "|\n");		}	}else{		if(text==1)			text=isnum(argv[0]);		while(argc--)			if(text)				puttext(*argv++);			else				putnum(*argv++);	}	Bputc(&bin, '\n');	exits(0);}voidusage(void){	fprint(2, "usage: %s [-8cnt] [-dox | -b n] [text]\n", argv0);	exits("usage");}voidput(int i){	Bputc(&bin, '|');	putn(i, ncol);	Bprint(&bin, " %s", str[i]);}char dig[]="0123456789abcdefghijklmnopqrstuvwxyz";voidputn(int n, int ndig){	if(ndig==0)		return;	putn(n/base, ndig-1);	Bputc(&bin, dig[n%base]);}voidputtext(char *s){	int n;	n=btoi(s)&0377;	if(strip)		Bputc(&bin, n);	else		Bprint(&bin, "%s\n", str[n]);}voidputnum(char *s){	while(*s){		putn(*s++&0377, ncol);		Bputc(&bin, '\n');	}}intbtoi(char *s){	int n;	n=0;	while(*s)		n=n*base+value(*s++, 0);	return(n);}intvalue(int c, int f){	char *s;	for(s=dig; s<dig+base; s++)		if(*s==c)			return(s-dig);	if(f)		return(-1);	fprint(2, "%s: bad input char %c\n", argv0, c);	exits("bad");	return 0;	/* to keep ken happy */}intisnum(char *s){	while(*s)		if(value(*s++, 1)==-1)			return(0);	return(1);}

⌨️ 快捷键说明

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