#include<stdio.h>

int readFile(char*,char**);
void writeFile(char*,char**,int);

int main(int argc,char *argv[]){
  
  char **line;//ファファイルから読み込んだデータを格納する2次元配列
  int size;//読み込んだ行数格納
  int i,j;

  if(argc!=3){
    printf("Please Enter Input File Name and Output File Name.\n");
    exit(1);
  }

  //2次元配列を用意する
  line=(char**)malloc(sizeof(char*)*10);
  for(i=0;i<10;i++){
    line[i]=(char*)malloc(sizeof(char)*256);
  }
  size=readFile(argv[1],line);
  writeFile(argv[2],line,size);
}

int readFile(char* rFile,char** line){
  FILE *fi;//ファイルポインタ
  char tmp[256];
  int i=0;
  
  if((fi=fopen(rFile,"r"))==NULL){//リードモードでファイルを開く
    printf("Can't Open Input File.\n");
    exit(1);
  }
  while(fgets(tmp,256,fi)!=NULL){//ファイルからデータを読み込む
    if(tmp==NULL){
      break;
    }
    strcpy(line[i],tmp);//line[i]にデータをコピーする
    i++;
    }
  fclose(fi);
  return i;
}

void writeFile(char* wFile,char** line,int size){
  FILE *fo;//ファイルポインタ
  int j;
  
  if((fo=fopen(wFile,"w"))==NULL){//ライトモードでファイルを開く
    printf("Can't Open Output File.\n");
    exit(1);
  }
  for(j=size-1;j>=0;j--){
    fprintf(fo,"%s",line[j]);//ファイルに書き込む
  }
  fclose(fo);
}

