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

📄 cshotplot.c

📁 linux下fortran语言开发
💻 C
字号:
/* Copyright (c) Colorado School of Mines, 2007.*//* All rights reserved.                       *//* Copyright (c) Colorado School of Mines, 2007.*//* All rights reserved.                       *//* cshotplot - convert CSHOT data to plotdata and parfile for CWP graphers */#include "par.h"/*********************** self documentation ******************************/char *sdoc[] = {"	 								"," CSHOTPLOT - convert CSHOT data to files for CWP graphers		"," 									"," cshotplot <cshot1plot [optional parameter file]			"," 									"," Required parameters:							"," 	none 								"," 									"," Optional parameter:							"," 	outpar=/dev/tty		output parameter file, contains:	","					number of plots (n2=)		","					points in each plot (n1=)	","					colors for plots (linecolor=)	"," 									",NULL};/**************** end self doc *******************************************//* Credits: *	CWP: Jack K. Cohen * *	Caveat: Should do dynamic allocation for n1, color arrays *		instead of arbitrarily defining BIGBUFSIZ below. *		But since xgraph, psgraph are hard-wired anyway, *		there was nothing to gain. */#define BIGBUFSIZ	10240	/* max number of plots, see above Caveat */intmain(int argc, char **argv){	char *outpar;		/* name of file holding output parfile	*/	FILE *outparfp;		/* ... its file pointer			*/	int n1[BIGBUFSIZ];	/* array of points in each plot		*/	int color[BIGBUFSIZ];	/* array of color for each plot		*/	int n2 = 0;		/* number of plots		 	*/	char buf[BUFSIZ];	/* buffer for the ascii data		*/	/* Hook up getpar */	initargs(argc, argv);	requestdoc(1);	/* Prevent floats from dumping on screen */	switch(filestat(STDOUT)) {	case BADFILETYPE:		warn("stdout is illegal filetype");		pagedoc();	break;	case TTY:		warn("stdout can't be terminal");		pagedoc();        default: /* Others OK */	break;	}	/* Get and open parameter file */	if (!getparstring("outpar", &outpar))  outpar = "/dev/tty" ;	outparfp = efopen(outpar, "w");			/* Loop over CSHOT raydata file */	while (fgets(buf,sizeof(buf),stdin)) { /* get n1cur */		int n1cur;	/* current value of n1		*/		int colorcur;   /* current color		*/		float x[2];	/* z,x pairs defining rays	*/		register int i1;				if (2 != sscanf(buf, "%d %d", &n1cur, &colorcur))			err("scan failed on header line #%d:\n%s",				 n2, buf);		color[n2] = colorcur;		n1[n2++] = n1cur;		/* get lines giving points */		for (i1 = 0; i1 < n1cur; ++i1) {			fgets(buf,sizeof(buf),stdin);			 			/* CSHOT puts (x,z), we want (z,x), switch in scanf */			if (2 != sscanf(buf, "%f %f", x+1, x))				err("group #%d: scan failed on line #%d:\n%s",					n2+1, i1+1, buf);			efwrite(x, FSIZE, 2, stdout);		}	}	/* Make par file */	fprintf(outparfp, "n2=%d\n", n2);	fprintf(outparfp, "n1=%d", n1[0]);	{ register int i2;	  for (i2 = 1; i2 < n2; ++i2)  fprintf(outparfp, ",%d", n1[i2]);	}	fprintf(outparfp, "\n");		fprintf(outparfp, "linecolor=%d", color[0]);	{ register int i2;	  for (i2 = 1; i2 < n2; ++i2)  fprintf(outparfp, ",%d", color[i2]);	}	fprintf(outparfp, "\n");			/* Clean up */	efclose(outparfp);		return EXIT_SUCCESS;}

⌨️ 快捷键说明

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