Kædet liste af strukturer.
Jeg er ved at skrive et program i C der skal læse en tekstfil og overføre filens indhold til en strukturvariabel. Tekstfilen ser sådan ud:Id Dato Antal timer
1000 29/4-2003 8,5
1000 30/4-2003 7,5
1001 29/4-2003 7,5
1001 30/4-2003 8.5
Problemet består i at linke funktionerne hent_id, hent_dato og hent_timer i funktionen hent_timepulje() således at parameterne ligges i structurvariablen struct timepulje, og at jeg kan bruge structurvariablen til at udregne løn i en funktion. Nedenunder ses den ufærdige kode.
Håber der er nogle som kan hjælpe med løse problemet, og hjælpe mig på sporet igen!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int hent_timepulje();
int hent_id(char, char, int);
int hent_dato(char, char, int);
int hent_timer(char, char, int);
struct timepulje
{
int id;
char dato[20];
float timer;
struct timepulje *pnaeste;
};
struct timepulje *pfoerste, *psidste, *pny;
int hent_timepulje()
{
FILE *fptr;
char ch;
char sLinie[81];
char id[81];
char i[81];
int j = 0;
if((fptr = fopen("c:\\timepul.txt", "r")) == NULL)
{
printf("\nFilen tekstfil.txt kan ikke åbnes. ");
exit(1);
}
printf("Filen har indholdet: \n\n");
while((fgets(sLinie, 81, fptr) != NULL))
{
pny = malloc(sizeof(struct timepulje));
if(pfoerste == NULL)
pfoerste = psidste = pny;
else
{
psidste->pnaeste = pny;
psidste = pny;
}
i = hent_id(sLinie, id, i);
pny->id = atoi(id);
i = hent_dato(sLinie, dato, i);
i = hent_timer(sLinie, timer, i);
}
}
int hent_id (char Linie[], char id[], int i)
{
char ch;
int j = 0;
while ((ch = sLinie[i]) == ' ' && sLinie[i] == '\n')
{
i++;
}
while ((ch = sLinie[i]) != ' ' && sLinie[i] != '\n')
{
id[j] = ch;
i++;
j++;
}
id[j] = '\0';
i++;
fclose(fptr);
return id;
}
int hent_dato (char Linie[], char dato[], int i)
{
char ch;
int j = 0;
while ((ch = sLinie[i]) == ' ' && sLinie[i] == '\n')
{
i++;
}
while ((ch = sLinie[i]) != ' ' && sLinie[i] != '\n')
{
dato[j] = ch;
i++;
j++;
}
dato[j] = '\0';
i++;
fclose(fptr);
return dato;
}
int hent_timer (char Linie[], char timer[], int i)
{
char ch;
int j = 0;
while ((ch = sLinie[i]) == ' ' && sLinie[i] == '\n')
{
i++;
}
while ((ch = sLinie[i]) != ' ' && sLinie[i] != '\n')
{
timer[j] = ch;
i++;
j++;
}
timer[j] = '\0';
i++;
fclose(fptr);
return timer;
}
void main(void)
{
hent_timepulje();
}