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

📄 find_disc.c

📁 seed格式数据解压程序,地震分析人员必备
💻 C
字号:
/*===========================================================================*//* DMC Interim out |             find_disc.c               |   Scan_phase    *//*===========================================================================*//*	Name:		find_disc.c	Purpose:	find all time discontinuities within a data file	Usage:		int find_disc ()				int	ifd;				err = find_disc(ifd)	Input:		int	ifd						open file descriptor				int precision				time precision	Output:		int find_disc ()   >=0  number of time segments found									=-1	error	Externals:	Debug - setting of environment variable DEBUG (globals.h)	Messages:		Warnings:		Errors:			Fatals:			Called by:		Calls to:	cmp_time		compares two times in struct input_time fmt				add_time		adds e-04 sec to time in struct input_time fmt				get_scaninfo	get subset of data hdr info and data start/end	Notes:		Assumes archive data record length = Lrecl	Problems:	Segment counter (segcnt) does not count skipped segments.				Assumes all data header records in 680xx-compatible byte order.	References:	none	Language:	ANSI standard C, under Sun OS 3.5	Revisions:	03/22/89  Kevin MacKenzie  original version*/                   /*=====================================*//*=================|                                       |=================*/                   /*=====================================*/#include "output.h"/* the following definitions provide private storage over multiple entries */	int find_disc (ifd, precision)int						ifd;			/* open file descriptor */long					precision;		/* time comparison precision, e-04 s */{	char				*buf;	/* ptr to input data record buffer */	int					file_o = 0;		/* file offset pointer */	int					len;			/* length of buffer returned by read */	struct	input_scan	rec_scan;		/* data hdr scan info of data record */	struct	input_time	rec_start;		/* start time of data record */	struct	input_time	rec_end;		/* end time of data record */	struct input_time	est_rec_start;	/* estim. start time of next rec */	struct input_data_logrec *rec;		/* data hdr */	long				interval;		/* data sample interval,e-04 sec/samp */	int					i = 1;			/* number of segments */	buf = (char *)malloc ((unsigned int) Lrecl);	fprintf (D_OUT,		"--------------------------------------------------- seg # %d\n",i);	while ((len = read (ifd, buf, (unsigned int) Lrecl)) > 0)	{		rec = (struct input_data_logrec *) buf;		get_scaninfo (buf, &rec_scan, &rec_start, &rec_end, &interval);		precision = min (precision, interval / 5);		if (file_o > 0 && cmp_time (est_rec_start, rec_start, precision) != 0)		{			i++;			fprintf (D_OUT,		"--------------------------------------------------- seg # %d\n",i);		}		fprintf (D_OUT, "number of samples = %8d\n",			(int)rec->hdr.full.nsamples);		fprintf (D_OUT, "fracsecs per sample = %6d\n",interval);		print_time ("data record start=",&rec_start);		print_time ("data record end=",&rec_end);		est_rec_start = add_time (rec_end, interval);		print_time ("estimated start=",&est_rec_start);		fprintf (D_OUT,"\n");		file_o += len;		/* increment file offset memory */	}	fprintf (D_OUT, "total bytes read = %d\n",file_o);	return (i);}

⌨️ 快捷键说明

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