📄 get_series.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 + -