Cześć, na wstępie chcę powiedzieć, że dopiero uczę się programować, więc moje umiejętności są dość mierne :) Podczas pisania natrafiłem na następujący problem, z którym w żaden sposób nie mogę sobie poradzić. Utworzyłem tablicę dynamiczną do przechowywania struktur, wczytałem do niej dane z pliku, a następnie chcę wyświetlić je na ekranie i tutaj coś się psuje. Zamiast danych czasami wyświetlają się jakieś "śmieci", a czasami jest wszystko okej. Szukałem już informacji na ten temat, ale nic nie znalazłem. Ktoś ma jakiś pomysł na rozwiązanie tego?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define IluZaw 5
#define N 20
int IleDru=0;
int IleMeczy=0;
typedef struct player{
char imie[N];
char nazwisko[N];
}player;
typedef struct team{
char name[N];
player zawodnik[IluZaw];
struct team* next;
}druzyna;
typedef struct match{
char data[N];
druzyna druzynaA,druzynaB;
char goleA[2],goleB[2];
struct match* next;
}mecz;
druzyna* head;
mecz* head1;
void DodajzPlikuMecze(const char nazwa_pliku[],mecz tab[])
{
FILE*plik;
plik=fopen(nazwa_pliku,"r");
if(plik==NULL)
{
printf("BLAD!");
return;
}
int i=0;
while(!feof(plik))
{
IleMeczy++;
fscanf(plik,"%s %s %s %s %s",tab[i].data,tab[i].druzynaA.name,
tab[i].goleA,tab[i].goleB,tab[i].druzynaB.name);
printf("%s\n%s %s:%s %s\n",tab[i].data,tab[i].druzynaA.name,
tab[i].goleA,tab[i].goleB,tab[i].druzynaB.name);
i++;
}
fclose(plik);
return;
int main()
{
int licznik=0,licznik1=0,ch,ch1,i,j;
char plik[N];
head=NULL;
head1=NULL;
druzyna* tab=(druzyna*)malloc(sizeof(druzyna)*IleDru);
mecz* tab1=(mecz*)malloc(sizeof(mecz)*IleMeczy);
printf("Czy chcesz wczytac plik z meczami? \n(Pozniej nie bedzie takiej mozliwosci)\n1.Tak\n2.Nie\n");
scanf("%d", &ch1);
if(ch1==1)
DodajzPlikuMecze("mecze.txt", tab1);
.
.
.
}
Plik tekstowy wygląda tak
01.01.2017 FC-Barcelona 3 2 Manchester-United
01.01.2017 Borussia-Dortmund 1 1 Real-Madryt