search_datafile.c

来自「时间序列工具」· C语言 代码 · 共 126 行

C
126
字号
/* *   This file is part of TISEAN * *   Copyright (c) 1998-2007 Rainer Hegger, Holger Kantz, Thomas Schreiber * *   TISEAN is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or *   (at your option) any later version. * *   TISEAN is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details. * *   You should have received a copy of the GNU General Public License *   along with TISEAN; if not, write to the Free Software *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA *//*Author: Rainer Hegger Last modified: Sep 3, 1999 */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include "tsa.h"char check_col(char *col){  int i;    for (i=0;i<strlen(col);i++)    if (!isdigit((unsigned int)col[i])) {      fprintf(stderr,"Column must be a unsigned integer. Ignoring it!\n");      return 0;    }  return 1;}char look_for_column(char *name,unsigned int *col){  char *hcol,*hname;  char vcol=0;  int j,in;  check_alloc(hname=(char*)calloc(strlen(name)+1,1));  check_alloc(hcol=(char*)calloc(strlen(name)+1,1));  j=0;  while (*(name+j) != '\0') {    if (*(name+j) == ',') {      in=sscanf(name+j+1,"%s",hcol);      if (in > 0)	vcol=check_col(hcol);      *(name+j)='\0';      break;    }    *(hname+j)=*(name+j);    j++;  }  *col=(unsigned int)atoi(hcol);  free(hname);  free(hcol);  return vcol;}char* search_datafile(int n,char **names,unsigned int *col,		      unsigned int verbosity){  char valid=0,validcol=0;  char *retname=NULL;  int i;  unsigned int hcol;  FILE *test;  for (i=n-1;i>0;i--) {    if (names[i] != NULL) {      valid=0;      if (strcmp(names[i],"-")) {	if (col != 0)	  validcol=look_for_column(names[i],&hcol);	test=fopen(names[i],"r");	if (test == NULL) {	  fprintf(stderr,"File %s not found!\n",names[i]);	}	else {	  fclose(test);	  if ((col != 0) && (validcol == 1))	    *col=hcol;	  if (col != 0) {	    if (verbosity&VER_INPUT)	      fprintf(stderr,"Using %s as datafile, reading column %u\n",		      names[i],*col);	  }	  else {	    if (verbosity&VER_INPUT)	      fprintf(stderr,"Using %s as datafile!\n",names[i]);	  }	  check_alloc(retname=(char*)calloc(strlen(names[i])+1,(size_t)1));	  strcpy(retname,names[i]);	  names[i]=NULL;	  return retname;	}      }      else {	valid=1;	break;      }    }  }  if (valid == 1) {    if (verbosity&VER_INPUT)      fprintf(stderr,"Reading input from stdin!\n");    return NULL;  }    if (verbosity&VER_INPUT) {    if ((col != 0) && (validcol == 1))      fprintf(stderr,"Reading input from stdin, using column %u!\n",*col);    else      fprintf(stderr,"Reading input from stdin!\n");  }  return NULL;}

⌨️ 快捷键说明

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