Ciao a tutti
Stavo facendo un programma in C tale che, se io inserisco uno specifico carattere dalla tastiera, va ad incrementare il valore di una variabile, finché inserendo uno specifico carattere l'esecuzione si ferma e vengono mostrati i valori delle variabili incrementate. Tutto ciò va scritto in un file.
Il codice di seguito mi dà errore di segmentazione.
codice:
#include <stdio.h>#include <stdlib.h>


int main(){


  int i = 0;
  char c;
  int counter[2];
  FILE *m;
  
  


  printf("\n                  *****CONTATORE*****\n");
  printf("Premi invio per i CIAO, premi c per le COMBO,\n premi f per terminare l'esecuzione\n");
 




  while(i == 0){
    fopen("contatore.dat", "w");
    if((c = getchar()) == '\n'){
      counter[0]++;
      printf("ciao\n");
      fprintf(m,"ciao +1\n");
    }else if((c = getchar()) == 'c'){
      counter[1]++;
      printf("combo!\n");
      fprintf(m,"combo +1\n");
    }else if((c = getchar()) == 'f'){
      printf("Il numero di ciao totali è stato di: %d\n", counter[0]);
      printf("Il numero di combo totali è stato di: %d\n", counter[1]);
      printf("Per un totale di %d\n", counter[0] + counter[1]);
      fprintf(m,"Il numero di ciao totali è stato di: %d\n", counter[0]);
      fprintf(m,"Il numero di combo totali è stato di: %d\n", counter[1]);
      fprintf(m,"Per un totale di %d\n", counter[0] + counter[1]);
      fclose(m);
      exit(0);
    }
  }
  
}
Se tolgo la scrittura su file il programma funziona solo se premo invio, mentre se premo gli altri due caratteri scelti (seguiti da invio) non succede niente.
Mi date una mano?