Łączenie dwóch liczb z tablicy w jedną.

0

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;
}
0

może stwórz z nich string połącz je i zamień na liczbę? albo pomnóż 1 przez 10 dodaj drugą i gotowe

0

1 i 4 to przykład program ma dowolne liczby zamieniać które natrafi w pliku tekstowym. Jutro spróbuję z tymi stringami

0

To może po prostu od razu wczytuj liczby, zamiast czytać plik znak po znaku i utrudniać sobie robotę? http://en.cppreference.com/w/cpp/io/c/fscanf

0

Dziękować. Z przemęczenia zapomniałem że jest taka fajna funkcja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1