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

📄 get_series.c

📁 非线性时间学列分析工具
💻 C
字号:
/*Author: Rainer Hegger Last modified: Sep 3, 1999 */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "tsa.h"#include "tisean_cec.h"#define SIZE_STEP 1000extern void check_alloc(void*);double *get_series(char *name,unsigned long *l,unsigned long ex,		unsigned int col,unsigned int verbosity){  char *input,*format;  int i;  unsigned long count,allcount,max_size=SIZE_STEP,hl;  int input_size=INPUT_SIZE;  double *x;  FILE *fin;    check_alloc(input=(char*)calloc((size_t)input_size,(size_t)1));  check_alloc(format=(char*)calloc((size_t)(4*col),(size_t)1));  strcpy(format,"");  for (i=1;i<col;i++)    strcat(format,"%*lf");  strcat(format,"%lf");    check_alloc(x=(double*)malloc(sizeof(double)*max_size));  hl= *l;    count=0;  allcount=0;  if (name == NULL) {    for (i=0;i<ex;i++)      if ((input=myfgets(input,&input_size,stdin,verbosity)) == NULL)	break;    while ((count < hl) && 	   ((input=myfgets(input,&input_size,stdin,verbosity)) != NULL)) {      if (count == max_size) {	max_size += SIZE_STEP;	check_alloc(x=(double*)realloc(x,sizeof(double)*max_size));      }      allcount++;      if (sscanf(input,format,&x[count]) != 1) {	if (verbosity&VER_INPUT)	  fprintf(stderr,"Line %lu ignored: %s",allcount,input);      }      else	count++;      if ((verbosity&VER_FIRST_LINE) && (count == 0))	fprintf(stderr,"get_series: first data item used:\n%lf\n",x[0]);    }  }  else {    fin=fopen(name,"r");    for (i=0;i<ex;i++)      if ((input=myfgets(input,&input_size,fin,verbosity)) == NULL)	break;    while ((count < hl) && 	   ((input=myfgets(input,&input_size,fin,verbosity)) != NULL)) {      if (count == max_size) {	max_size += SIZE_STEP;	check_alloc(x=(double*)realloc(x,sizeof(double)*max_size));      }      allcount++;      if (sscanf(input,format,&x[count]) != 1) {	if (verbosity&VER_INPUT)	  fprintf(stderr,"Line %lu ignored: %s",allcount,input);      }      else	count++;    }    fclose(fin);  }  free(input);    *l = count;  if (*l == 0) {    fprintf(stderr,"0 lines read. It makes no sense to continue. Exiting!\n");    exit(GET_SERIES_NO_LINES);  }  else {    if (verbosity&VER_INPUT)      fprintf(stderr,"Use %lu lines.\n",*l);  }  if (max_size > count)    check_alloc(x=(double*)realloc(x,sizeof(double)*count));    return x;}#undef SIZE_STEP

⌨️ 快捷键说明

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