#include <stdio.h>
#include <ctype.h>
#include <string.h>

/*Prototypen*/
void grosschrift(char *, char *);
void kleinschrift(char *, char *);
void international(char *,char *);
void oeffne_dateien(char *, char *, FILE **, FILE **);


void grosschrift(char *arg2, char *arg3)
{
  FILE *in,*out;
  int c;
  oeffne_dateien(arg2,arg3,&in,&out);

  while((c=getc(in)) !=EOF)
    {
      if(islower(c))
          putc(toupper(c),out);
      else
          putc(c,out);
    }
}


void kleinschrift(char *arg2, char *arg3)
{
  FILE *in,*out;
  int c;
  oeffne_dateien(arg2,arg3,&in,&out);

  while((c=getc(in)) !=EOF)
    {
      if(isupper(c))
          putc(tolower(c),out);
      else
          putc(c,out);
     }
}

void international(char *arg2, char *arg3)
{
  FILE *in,*out;
  int c;
  oeffne_dateien(arg2,arg3,&in,&out);

  while((c=getc(in)) !=EOF)
    {
      if(isascii(c)==0)
          putc(toascii(c),out);
      else
          putc(c,out);
     }
}

void oeffne_dateien(char *quelle, char *ziel, FILE **input, FILE **output)
{
  if((*input=fopen(quelle,"rt")) == NULL)
    {
      fprintf(stderr,"Fehler beim oeffnen (lesen) von %s\n",quelle);
      exit(0);
    }
  if((*output=fopen(ziel,"wt")) == NULL)
   {
     fprintf(stderr,"Fehler beim oeffnen (schreiben) von %s\n",ziel);
     exit(0);
    }
}


int main(int argc, char **argv)
{
  if(argc<4)
    {
      fprintf(stderr,"usage : Programmname -[Schalter] Textdatei.txt Zieldatei.txt\n"
                     "für -[Schalter] : -b (kompl. Textdatei in Grossschrift)\n"
                     "                  -s (kompl. Textdatei in Kleinschrift)\n"
                     "                  -i (nat. Zeichen in ASCII-Zeichen konvert.\n");
      exit(0);
    }

  if(strcmp(*++argv,"-b")==0)
      grosschrift(argv[2],argv[3]);
  else if(strcmp(*argv,"-s")==0)
      kleinschrift(argv[2],argv[3]);
  else if(strcmp(*argv,"-i")==0)
      international(argv[2],argv[3]);
  else
   {
    fprintf(stderr,"Fehler beim 2.Argument(unbekannt) : %s \n",*argv);
    fprintf(stderr,"2.Argument. : -b (kompl. Textdatei in Grossschrift)\n"
                   "              -s (kompl. Textdatei in Kleinschrift)\n"
                   "              -i (nat. Zeichen in ASCII-Zeichen konvert.\n");
    exit(1);
   }
  return 0;
}