/*
 * =====================================================================================
 *
 *       Filename:  liczby2.c
 *    Description:  Wczytywanie liczb ze strumienia. 
 *
 * =====================================================================================
 */
#include <stdio.h>

/*  Funkcja wczytuje do tablicy 't[]' liczby ze strumienia 'f'. */
int czytaj_liczby(FILE* f, int t[], int n)
{
   int i=0;
   while( feof(f) == 0 && i< n)
   {
      if (fscanf(f, "%d", &(t[i])) == 1 ) i=i+1;
      else fgetc(f);  /*  Jezli nie udalo sie wczytac liczby calkowitej to pobieramy jeden znak ze strumienia aby przejsc dalej w pliku. */
   }
   return i;
}

/*  Funkcaj liczy sume liczb w tablicy t.  */
int suma(int t[], int n)
{
   int s=0, i=0;

   while( i < n )
   {
      s = s + t[i];
      i = i + 1;
   }
   return s;
}

/*  Funkcja wczytuje napis podany w terminalu. */
char *readline(char t[], int n)
{
   int znak, i=0;
   znak=getchar();
   if(znak==EOF) return NULL;

   while(znak!=EOF  && i<n-2 && znak!='\n' )
   {
      t[i]=znak;
      znak=getchar();
      i=i+1;
   }
   if(i==n-1)
   {
      t[i]=znak;
      i=i+1;
   }
   t[i]='\0';

   return t;
}

#define MAX_ILOSC_LICZB 1000
#define MAX_DL_NAZWY 1000

int main()
{
   FILE* plik;
   int t[MAX_ILOSC_LICZB];
   int n=0, k=0, s=0;
   char nazwa_pliku[MAX_DL_NAZWY];

   printf("Podaj nazwe pliku do odczytu: ");
   readline(nazwa_pliku, MAX_DL_NAZWY );

   plik = fopen(nazwa_pliku, "r");
   if(plik != NULL)
   {
      printf("Ile liczb wczytac ? \nn=");
      scanf("%d", &k);
      n=czytaj_liczby(plik, t, k);
      fclose(plik);

      s=suma(t,n);
      printf("Nazwa pliku: %s\nn=%d\nsuma=%d\n", nazwa_pliku, n, s);

      plik=fopen("wynik.txt", "w");
      if( plik != NULL)
      {
         fprintf(plik, "Nazwa pliku: %s\nn=%d\nsuma=%d\n", nazwa_pliku, n, s);
         fclose(plik);
      } else printf("Nie moge otworzyc pliku wyjsciowego\n");


   }
   else printf("Bald otwarcia pliku: %s\n", nazwa_pliku);

   return 0;
}
