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

📄 unicode.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>char	usage[] = "unicode { [-t] hex hex ... | hexmin-hexmax ... | [-n] char ... }";char	hex[] = "0123456789abcdefABCDEF";int	numout = 0;int	text = 0;char	*err;Biobuf	bout;char	*range(char*[]);char	*nums(char*[]);char	*chars(char*[]);voidmain(int argc, char *argv[]){	ARGBEGIN{	case 'n':		numout = 1;		break;	case 't':		text = 1;		break;	}ARGEND	Binit(&bout, 1, OWRITE);	if(argc == 0){		fprint(2, "usage: %s\n", usage);		exits("usage");	}	if(!numout && utfrune(argv[0], '-'))		exits(range(argv));	if(numout || strchr(hex, argv[0][0])==0)		exits(nums(argv));	exits(chars(argv));}char*range(char *argv[]){	char *q;	int min, max;	int i;	while(*argv){		q = *argv;		if(strchr(hex, q[0]) == 0){    err:			fprint(2, "unicode: bad range %s\n", *argv);			return "bad range";		}		min = strtoul(q, &q, 16);		if(min<0 || min>0xFFFF || *q!='-')			goto err;		q++;		if(strchr(hex, *q) == 0)			goto err;		max = strtoul(q, &q, 16);		if(max<0 || max>0xFFFF || max<min || *q!=0)			goto err;		i = 0;		do{			Bprint(&bout, "%.4x %C", min, min);			i++;			if(min==max || (i&7)==0)				Bprint(&bout, "\n");			else				Bprint(&bout, "\t");			min++;		}while(min<=max);		argv++;	}	return 0;}char*nums(char *argv[]){	char *q;	Rune r;	int w;	while(*argv){		q = *argv;		while(*q){			w = chartorune(&r, q);			if(r==0x80 && (q[0]&0xFF)!=0x80){				fprint(2, "unicode: invalid utf string %s\n", *argv);				return "bad utf";			}			Bprint(&bout, "%.4x\n", r);			q += w;		}		argv++;	}	return 0;}char*chars(char *argv[]){	char *q;	int m;	while(*argv){		q = *argv;		if(strchr(hex, q[0]) == 0){    err:			fprint(2, "unicode: bad unicode value %s\n", *argv);			return "bad char";		}		m = strtoul(q, &q, 16);		if(m<0 || m>0xFFFF || *q!=0)			goto err;		Bprint(&bout, "%C", m);		if(!text)			Bprint(&bout, "\n");		argv++;	}	return 0;}

⌨️ 快捷键说明

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