#include <stdio.h>
#include <string.h>
#include <conio.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 * eingabe, * ausgabe;
   int statistik[N+2], wortlaenge, i;
   char dateiName[64];

   printf("Bitte Dateinamen eingeben!\n");
   scanf("%s", dateiName);
   eingabe = fopen(dateiName, "r");

   if (eingabe != NULL)
   {
      for (i=0; i<N+2; ++i)
      	statistik[i] = 0;

      while (wortlaenge = wortAnalyse(eingabe))
      	aktualisiereStatistik(wortlaenge,statistik);
   	fclose(eingabe);

      ausgabe = fopen("statistik.txt","w");
      if (!schreibeStatistik(ausgabe ,statistik))
      {
      	printf("Fehler beim Schreiben!\n\n");
     		printf("Die Statistik lautet:\n\n");
         schreibeStatistik(stdout,statistik);
      }
      if (ausgabe != NULL) fclose(ausgabe);

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

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

   if (fscanf(eingabe, "%s", wort)!=EOF)
   	laenge = strlen(wort);
   else
   	laenge = 0;
//   printf("Laenge: %d",laenge);
   return laenge;
}

void aktualisiereStatistik(int wortLaenge, int statistik[N+2])
{
	if (wortLaenge > 0)
   {
		++statistik[0];
   	if (wortLaenge > N)
   		++statistik[N+1];
  		else
   		++statistik[wortLaenge];
   }
   else
   	fprintf(stderr, "Fehler in aktualisiereStatistik. Negative Wortlaenge!\n");
}

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

   if(ausgabe != NULL)
   {
   	ok = 1;
      fprintf(ausgabe, "Die Datei enthaelt %d Worte.\n\n",statistik[0]);
      for (i = 1; i <=N; ++i)
      	fprintf(ausgabe, "Worte der Laenge %d: %d.\n",i,statistik[i]);
      fprintf(ausgabe, "Worte der Laenge > %d: %d.\n",N,statistik[N+1]);
   }
   return ok;
}


