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

/* Legge dal file "dati1.dat" una sequenza di caratteri '0' e '1', conta gli
   '0' e gli '1' e stampa il risultato sul file "risposta.dat" */

#include <stdio.h>

int main(void)
{
  FILE *ptrFile;
  int car, conta0 = 0, conta1 = 0;
  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);

  /* lettura dal file */
  if ((ptrFile = fopen(nomefileinput, "r")) == NULL) {
    printf("Errore aprendo in lettura il file %s\n", nomefileinput);
    exit(1);
  }

  while ((car = fgetc(ptrFile)) != EOF) {
    switch (car) {
    case '0': conta0++; break;
    case '1': conta1++; break;
    }
  }
  fclose(ptrFile);
        
  /* scrittura sul file */
  if ((ptrFile = fopen(nomefileoutput, "w")) == NULL) {
    printf("Errore aprendo in scrittura il file %s\n", nomefileoutput);
    exit(1);
  }

  fprintf(ptrFile, "Il numero di 0 nel file e`: %d\n", conta0);
  fprintf(ptrFile, "Il numero di 1 nel file e`: %d\n", conta1);
  fclose(ptrFile);
        
  return 0;
}