plottoa.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 238 行

C
238
字号
#ifndef lintstatic char SccsId[] = " @(#)plottoa.c	4.1	(ULTRIX)	7/17/90";#endif not(lint)/* * Modification History * * 	April-11-1989, Pradeep Chetal *	Added changes from 4.3Tahoe BSD for lots of new drivers */#ifndef lintstatic char sccsid[] = "@(#)plottoa.c	4.2 (Berkeley) 1/9/85";#endif/* * Convert the standard plot input into a readable form for debugging. */#include <stdio.h>float deltx;float delty;main(argc, argv)char **argv;{	int std=1;	FILE *fin;	while(argc-- > 1) {		if(*argv[1] == '-')			switch(argv[1][1]) {			case 'l':				deltx = atoi(&argv[1][2]) - 1;				break;			case 'w':				delty = atoi(&argv[1][2]) - 1;				break;			}		else {			std = 0;			if ((fin = fopen(argv[1], "r")) == NULL) {				fprintf(stderr, "can't open %s\n", argv[1]);				exit(1);			}			fplt(fin);			fclose(fin);		}		argv++;	}	if (std)		fplt( stdin );	exit(0);}fplt(fin)FILE *fin;{	int c;	char s[256];	int xi,yi,x0,y0,x1,y1,r,dx,n,i;	int pat[256];	openpl();	while((c = getc(fin)) != EOF){		switch(c){		case 'm':			xi = getsi(fin);			yi = getsi(fin);			move(xi,yi);			break;		case 'l':			x0 = getsi(fin);			y0 = getsi(fin);			x1 = getsi(fin);			y1 = getsi(fin);			line(x0,y0,x1,y1);			break;		case 't':			getstr(s,fin);			label(s);			break;		case 'e':			erase();			break;		case 'p':			xi = getsi(fin);			yi = getsi(fin);			point(xi,yi);			break;		case 'n':			xi = getsi(fin);			yi = getsi(fin);			cont(xi,yi);			break;		case 's':			x0 = getsi(fin);			y0 = getsi(fin);			x1 = getsi(fin);			y1 = getsi(fin);			space(x0,y0,x1,y1);			break;		case 'a':			xi = getsi(fin);			yi = getsi(fin);			x0 = getsi(fin);			y0 = getsi(fin);			x1 = getsi(fin);			y1 = getsi(fin);			arc(xi,yi,x0,y0,x1,y1);			break;		case 'c':			xi = getsi(fin);			yi = getsi(fin);			r = getsi(fin);			circle(xi,yi,r);			break;		case 'f':			getstr(s,fin);			linemod(s);			break;		case 'd':			xi = getsi(fin);			yi = getsi(fin);			dx = getsi(fin);			n = getsi(fin);			for(i=0; i<n; i++)pat[i] = getsi(fin);			dot(xi,yi,dx,n,pat);			break;		}	}	closepl();}/* get an integer stored in 2 ascii bytes. */getsi(fin)FILE *fin;{	short a, b;	if((b = getc(fin)) == EOF)		return(EOF);	if((a = getc(fin)) == EOF)		return(EOF);	a = a<<8;	return(a|b);}getstr(s,fin)char *s;FILE *fin;{	for( ; *s = getc(fin); s++)		if(*s == '\n')			break;	*s = '\0';}/* Print out the arguments to plot routines. */space(x0,y0,x1,y1)int x0,y0,x1,y1;{	printf( "s %d %d %d %d\n", x0, y0, x1, y1 );}openpl(){}closepl(){}erase(){	printf( "e\n" );}move(xi,yi)int xi,yi;{	printf( "m %d %d\n", xi, yi );}cont(xi,yi)int xi,yi;{	printf( "n %d %d\n", xi, yi );}line(x0,y0,x1,y1)int x0,y0,x1,y1;{	printf( "l %d %d %d %d\n", x0, y0, x1, y1 );}point(xi,yi)int xi,yi;{	printf( "p %d %d\n", xi, yi );}label(s)char *s;{	printf( "t%s\n\n", s );}arc(xcent,ycent,xbeg,ybeg,xend,yend)int xcent,ycent,xbeg,ybeg,xend,yend;{	printf( "a %d %d %d %d %d %d\n", xcent, ycent, xbeg, ybeg, xend, yend );}circle (xc,yc,r)int xc,yc,r;{	printf( "c %d %d %d\n", xc, yc, r );}linemod( line )char	*line;{	printf( "f%s\n\n", line );}/* don't know what this should do */dot(xi,yi,dx,n,pat)int xi,yi,dx,n;char *pat;{	printf("d %d %d %d %d %s\n\n", xi, yi, dx, n, pat);}

⌨️ 快捷键说明

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