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

📄 seq.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>double	min = 1.0;double	max = 0.0;double	incr = 1.0;int	constant = 0;int	nsteps;char	*format;voidusage(void){	fprint(2, "usage: seq [-fformat] [-w] [first [incr]] last\n");	exits("usage");}voidbuildfmt(void){	char *dp;	int w, p, maxw, maxp;	static char fmt[16];	char buf[32];	double val;	format = "%g\n";	if(!constant)		return;	maxw = 0;	maxp = 0;	for(val = min; val <= max; val += incr){		sprint(buf, "%g", val);		if(strchr(buf, 'e')!=0)			return;		dp = strchr(buf,'.');		w = dp==0? strlen(buf): dp-buf;		p = dp==0? 0: strlen(strchr(buf,'.')+1);		if(w>maxw)			maxw = w;		if(p>maxp)			maxp = p;	}	if(maxp > 0)		maxw += maxp+1;	sprint(fmt,"%%%d.%df\n", maxw, maxp);	format = fmt;}voidmain(int argc, char *argv[]){	int j, n;	char buf[256], ffmt[4096];	double val;	ARGBEGIN{	case 'w':		constant++;		break;	case 'f':		format = EARGF(usage());		if(format[strlen(format)-1] != '\n'){			sprint(ffmt, "%s\n", format);			format = ffmt;		}		break;	default:		goto out;	}ARGEND    out:	if(argc<1 || argc>3)		usage();	max = atof(argv[argc-1]);	if(argc > 1)		min = atof(argv[0]);	if(argc > 2)		incr = atof(argv[1]);	if(incr == 0){		fprint(2, "seq: zero increment\n");		exits("zero increment");	}	if(!format)		buildfmt();	if(incr > 0){		for(val = min; val <= max; val += incr){			n = sprint(buf, format, val);			if(constant)				for(j=0; buf[j]==' '; j++)					buf[j] ='0';			write(1, buf, n);		}	}else{		for(val = min; val >= max; val += incr){			n = sprint(buf, format, val);			if(constant)				for(j=0; buf[j]==' '; j++)					buf[j] ='0';			write(1, buf, n);		}	}	exits(0);}

⌨️ 快捷键说明

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