/* File: carbon.c */
/* Scopo: uso di file */

/* Conversione carbonari */

#include <stdio.h>

void ConvertiFile(char *filein, char *fileout);

int main(void)
{
  char nomefileinput[13], nomefileoutput[13];

  printf("Introdurre il nome del file da convertire: ");
  scanf("%12s", nomefileinput);
  printf("Introdurre il nome del file dopo la conversione: ");
  scanf("%12s", nomefileoutput);
  ConvertiFile(nomefileinput, nomefileoutput);
        
  return 0;
}

void ConvertiFile(char *filein, char *fileout)
{
  FILE *ptrfilein, *ptrfileout;
  int car;
        
  if ((ptrfilein = fopen(filein, "r")) == NULL) {
    printf("Non e` possibile aprire in lettura il file %s\n", filein);
    exit(1);
  }

  if ((ptrfileout = fopen(fileout, "w")) == NULL) {
    printf("Non e` possibile aprire in scrittura il file %s\n", fileout);
    exit(1);
  }

  car = fgetc(ptrfilein);
  while (!feof(ptrfilein)) {
    switch (car) {
    case 'a': fputc('o', ptrfileout); break;
    case 'o': fputc('a', ptrfileout); break;
    case 'b': fputc('p', ptrfileout); break;
    case 'p': fputc('b', ptrfileout); break;
    case 'c': fputc('g', ptrfileout); break;
    case 'g': fputc('c', ptrfileout); break;
    case 'd': fputc('t', ptrfileout); break;
    case 't': fputc('d', ptrfileout); break;
    case 'e': fputc('i', ptrfileout); break;
    case 'i': fputc('e', ptrfileout); break;
    case 'f': fputc('v', ptrfileout); break;
    case 'v': fputc('f', ptrfileout); break;
    case 'l': fputc('r', ptrfileout); break;
    case 'r': fputc('l', ptrfileout); break;
    case 'm': fputc('n', ptrfileout); break;
    case 'n': fputc('m', ptrfileout); break;
    case 's': fputc('z', ptrfileout); break;
    case 'z': fputc('s', ptrfileout); break;
    default: fputc(car, ptrfileout); break;
    }
    car = fgetc(ptrfilein);
  }
  fclose(ptrfilein);
  fclose(ptrfileout);
}