#include <stdio.h>
#include <conio.h>
#include <string.h>

#define N 15

int wortAnalyse(FILE * eingabe);

void aktualisiereStatistik(int wortLaenge, int statistik[N+2]);

int schreibeStatistik(FILE * ausgabe, int statistik[N+2]);

main()
{
	FILE * ein, * aus;
   int statistik[N+2];
   int anzahl, i;
   char namen[64];

   for (i = 0; i < N+2; ++i)
   	statistik[i] = 0;

   printf("Bitte Dateiname der zu analysierenden Datei eingeben.\n");
   scanf("%s",namen);
	ein = fopen(namen,"r");

   if (ein != NULL)
   {
		while (anzahl = wortAnalyse(ein) )
         aktualisiereStatistik(anzahl,statistik);
   	fclose(ein);
      aus = fopen("statistik.txt", "w");
      if (!schreibeStatistik(aus, statistik))
      {
        	printf("Fehler beim schreiben von Statistik.txt\n\n");
         printf("Die Statistik ist:  \n");
         schreibeStatistik(stdout,statistik);
      }
      if (aus != NULL) fclose(aus);

   }
   else
   	printf("Fehler: Konnte Datei %s nicht oeffnen!\n",namen);
 getch();
}

int wortAnalyse(FILE * eingabe)
{
	int laenge = 0;
   char wort[64];

   if ( fscanf(eingabe, "%s", wort) != EOF)
   	laenge = strlen(wort);
   else
   	laenge = 0;

   return laenge;
}

void aktualisiereStatistik(int wortLaenge, int statistik[N+2])
{
	if (wortLaenge > 0)
   {
   	if (wortLaenge > N)
      	++statistik[N+1];
      else
			++statistik[wortLaenge];
      ++statistik[0];
   }
   else
   	printf("Fehler in aktualisiere Statistik; laenge: %d\n", wortLaenge);
}

int schreibeStatistik(FILE * ausgabe, int statistik[N+2])
{
	int ok = 0, i;

   if (ausgabe != NULL)
   {
   	fprintf(ausgabe,"In der Datei waren %d Worte enthalten\n\n",statistik[0]);
      for (i = 1; i < N+1; ++i)
      	fprintf(ausgabe,"Worte der Laenge %d: %d\n", i, statistik[i]);
      fprintf(ausgabe,"Worte laenger als %d: %d\n", N, statistik[N+1]);
      ok = 1;
   }
   return ok;
}

