/*
C Example
データ入出力の例文

#### コンパイル
gcc hinagata.c -lm -o HINAGATA

By NOGUCHI Katsuyuki (ISAS)
Jul 09 2002 ver.1.0
Sep 27 2003 ver.1.1
*/

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
/*#include </usr/local/pgplot/cpgplot.h>*/

#define MAX_DATA_NUM 10000

/*関数のプロトタイプ宣言*/
void read_data(FILE *fp,double x[],double y[],int *num,int max);

int main(int argc, char *argv[])
{
  char infilename[100],outfilename[100];
  FILE *infp,*outfp;
  double x1[MAX_DATA_NUM],y1[MAX_DATA_NUM],x2[MAX_DATA_NUM],y2[MAX_DATA_NUM];
  int i,num1,num2;

  if(argc!=3){
    fprintf(stderr,"usage : cat infile1 | %s infile2 outfile1 > outfile2\n",argv[0]);
    exit(1);
  }

  strcpy(infilename,argv[1]);
  strcpy(outfilename,argv[2]);

  if((infp=fopen(infilename,"r"))==NULL){
    fprintf(stderr,"Can't open infile\n");
    exit(1);
  }

  if((outfp=fopen(outfilename,"w"))==NULL){
    fprintf(stderr,"Can't open outfile\n");
    exit(1);
  }
  
  /*infile1(標準入力)からの入力*/
  read_data(stdin,x1,y1,&num1,MAX_DATA_NUM);
  /*infile2からの入力*/
  read_data(infp,x2,y2,&num2,MAX_DATA_NUM);

  /*outfile1への出力*/
  for(i=0;i<num1;i++){
    fprintf(outfp,"%f %f\n",x1[i],y1[i]);
  }
  /*outfile2(標準出力)への出力*/
  for(i=0;i<num2;i++){
    fprintf(stdout,"%f %f\n",x2[i],y2[i]);
  }

  return(1);
}

void read_data(FILE *fp,double x[],double y[],int *num,int max)
{
/*先頭が#の場合は、コメントアウト行と見なす。*/

  int i;
  char c;

  i=0;
  while(1){
    c=fgetc(fp);
    if(c==EOF){/*fprintf(stderr,"break\n");*/break;}
    
    /*先頭が#の場合は、改行があるまで読み飛ばす*/
    if(c=='#'){
      /*fprintf(stderr,"%c",c);*//*for test*/
      while(1){
	c=fgetc(fp);
	/*fprintf(stderr,"%c",c);*//*for test*/
	if(c=='\n')break;
      }
    }
    else{/*先頭が#でなければ、データ読み取り*/
      
      /*最初に一字を読んだ分をいったん戻す*/
      /*fseek(fp,-1L,SEEK_CUR);*//*fopenでファイルを開いている場合のみ*/
      ungetc(c,fp);/*stdinからの入力でも対応可能*/
      
      fscanf(fp,"%lf",&x[i]);
      fscanf(fp,"%lf",&y[i]);

      c=fgetc(fp);/*改行読み捨て*/
      /*fprintf(stderr,"%f %f [%c]\n",x,y,c);*/
      i++;
      if(i>max){
	fprintf(stderr,"Too many data number\n");
	exit(1);
      }
    }
    
  }
  
  *num=i;
  /*fprintf(stderr,"num %d\n",*num);*/
}