Witam.
piszę aktualnie program który odczytuje dane z pliku txt i zapisuje je w strukturach.
Nie mogę sobie poradzić z problemem dotyczącym łączeniem pojedynczych cyfr.
punkty[0] = 1
punkty[1] = 4
jak zrobić z tego jedną zmienną o wartości 14 zawodnicy[i].rzuty
#include <stdio.h>
#include <stdlib.h>
#define ROZMIAR 4
#define maxzn 30
#define maxpkt 3
void zeruj_strukt(struct druzyna *zawodnicy);
long zapisz_imie(struct druzyna *zawodnicy, int i, FILE *pd, long licznik, char *ch);
long zapisz_nazwisko(struct druzyna *zawodnicy, int i, FILE *pd, long licznik, char *ch);
long zapisz_punkty(struct druzyna *zawodnicy, int i, FILE *pd, long licznik, char *ch);
struct druzyna { // szablon struktury
int numer;
char imie[maxzn];
char nazwisko[maxzn];
int rzuty;
int trafienia;
int asysty;
int faule;
};
int main(void)
{
struct druzyna zawodnicy[ROZMIAR];
zeruj_strukt(zawodnicy); // zerowanie tablic
FILE *pd;
char ch;
long rozmiar_pl, licznik; // long dla bajtów w plikach txt
int i;
if ((pd = fopen("druzyna.txt", "r")) == NULL) // tylko do odczytu
{
fprintf(stdin, "Nie moge otworzyc pliku.\n");
exit(EXIT_FAILURE);
}
fseek(pd, 0L, SEEK_END); //szukamy konca pliku aby wyznaczyc jego wielkosc
rozmiar_pl = ftell(pd); //bajty
fseek(pd, 0L, SEEK_SET);
licznik = 0L;
for (i = 0; i < ROZMIAR; i++) // zawodnicy z pliku txt
{
fseek(pd, 0L, SEEK_CUR); //
ch = getc(pd);
zawodnicy[i].numer = ch;
fseek(pd, 1L, SEEK_CUR);
licznik++;
licznik = zapisz_imie(zawodnicy, i, pd, licznik, ch);
licznik = zapisz_punkty(zawodnicy, i, pd, licznik, ch);
// tu się zaciąłem.
}
putchar('\n');
fclose(pd);
return 0;
}
void zeruj_strukt(struct druzyna *zawodnicy)
{
int i, j;
for(i = 0; i < ROZMIAR; i++)
for (j = 0; j < maxzn; j++)
{
zawodnicy[i].imie[j] = '\0';
zawodnicy[i].nazwisko[j] = '\0';
}
}
long zapisz_imie(struct druzyna *zawodnicy, int i, FILE *pd, long licznik, char *ch)
{
int j;
licznik++;
for (j = 0; j < maxzn; j++)
{
ch = getc(pd);
if (ch != ' ')
zawodnicy[i].imie[j] = ch;
fseek(pd, 0L, SEEK_CUR);
licznik++;
if (isblank(ch))
break;
}
fseek(pd, 0L, SEEK_CUR);
licznik = zapisz_nazwisko(zawodnicy, i, pd, licznik, ch);
return licznik;
}
long zapisz_nazwisko(struct druzyna *zawodnicy, int i, FILE *pd, long licznik, char *ch)
{
{
int j;
licznik++;
zawodnicy[i].nazwisko[0] = ch; // pozbycie się 'spacji'
for (j = 0; j < maxzn; j++)
{
ch = getc(pd);
if (ch != ' ')
zawodnicy[i].nazwisko[j] = ch;
fseek(pd, 0L, SEEK_CUR);
licznik++;
if (isblank(ch))
break;
}
return licznik;
}
}
long zapisz_punkty(struct druzyna *zawodnicy, int i, FILE *pd, long licznik, char *ch) // ta funkcja nie jest skończona
{
int punkty[maxpkt];
int j;
while (ch != '\n')
{
ch = getc(pd);
for (j = 0; j < maxpkt; j++)
{
punkty[j] = ch;
ch = getc(pd);
licznik++;
if (ch == ' ')
{
fseek(pd, 0L, SEEK_CUR);
licznik++;
break;
}
}
fseek(pd, 1L, SEEK_CUR);
ch = getc(pd);
}
return licznik;
}