Czesc,
mam do napisania program ktory wczytuje z pliku tekstowego do jednokierunkowej listy troche rekordów. Przykladowe 6 rekordow:
1 1 2018-02-10.17:20:22 25
2 2 2018-02-10.17:20:27 24.44
3 3 2018-02-10.17:20:30 25.56
4 4 2018-02-10.17:20:36 24.06
5 1 2018-02-10.17:25:13 25.31
6 2 2018-02-10.17:25:16 25.37
nr pomiaru,nr czujnika wykonującego pomiar,data i godzina pomiaru i pomiar temperatury.
Po wczytaniu wszystkich rekordów do listy muszę rozdzielić elementy owej listy na cztery listy jednokierunkowe,po jednej liście dla każdego z czujników(czujników jest 4). I tu własnie mam problem bo nie mogę dojść do tego rozdzielić te elementy,na razie udało mi się tylko zaincjalizować poprawnie cztery nowe głowy. Wiem ze kod nie jest piękny ale na razie skupiam się tylko żeby program działa,potem będę refrakturyzował :) Będę bardzo wdzięczny za jakieś wskazówki
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct pomiar {
unsigned int nr_pomiaru;
unsigned int nr_czujnika;
char data_i_czas[20];
double temp;
struct pomiar *nast;
};
int main()
{
struct pomiar *glowa = NULL, *glowa1 = NULL, *glowa2 = NULL, *glowa3 = NULL, *glowa4 = NULL;
struct pomiar *biezacy;
FILE *fp;
unsigned int nr_pomiaru;
unsigned int nr_czujnika;
char data_i_czas[20];
double temp;
char nazwa_pliku[20];
printf("Podaj nazwe pliku z danymi:\n");
scanf("%s", nazwa_pliku);
strcat(nazwa_pliku, ".txt");
if ((fp = fopen(nazwa_pliku, "r")) == NULL)
{
printf("Nie otwarto pliku");
exit(0);
}
else
printf("Otwarto plik\n");
fscanf(fp, "%d %d %s %lf", &nr_pomiaru, &nr_czujnika, data_i_czas, &temp);
while (!feof(fp))
{
if (glowa == NULL)
glowa = biezacy = malloc(sizeof(struct pomiar));
else
{
biezacy->nast = malloc(sizeof(struct pomiar));
biezacy = biezacy->nast;
}
biezacy->nr_pomiaru = nr_pomiaru;
biezacy->nr_czujnika = nr_czujnika;
strcpy(biezacy->data_i_czas, data_i_czas);
biezacy->temp = temp;
biezacy->nast = NULL;
fscanf(fp, "%d %d %s %lf", &nr_pomiaru, &nr_czujnika, data_i_czas, &temp);
}
fclose(fp);
biezacy = glowa;
while (biezacy != NULL)
{
if (biezacy->nr_czujnika == 1)
{
if (glowa1 == NULL)
glowa1 =biezacy;
else
biezacy = biezacy->nast;
}
if (biezacy->nr_czujnika == 2)
{
if (glowa2 == NULL)
glowa2 = biezacy;
else
biezacy = biezacy->nast;
}
if (biezacy->nr_czujnika == 3)
{
if (glowa3 == NULL)
glowa3 = biezacy;
else
biezacy = biezacy->nast;
}
if (biezacy->nr_czujnika == 4)
{
if (glowa4 == NULL)
glowa4 = biezacy;
else
biezacy = biezacy->nast;
}
}
biezacy->nast = NULL;
return 0;
}