Šta je novo?

Dvostruki pokazivac na strukturu

UnlockeR

Poštovan
Učlanjen(a)
23.12.2017
Poruke
1
Poena
51
U ulaznoj datoteci pod nazivom "parcele.txt" dati su podaci o parcelama zemljišta: šifra parcele (5 znakova), površina parcele i cena. Napisati C program koji učitava podatke o parcelama i u izlaznu datoteku
"najskuplje.txt" ispisuje šifre 3 parcele sa najvećom cenom po metru kvadratnom.

#include <stdio.h>
#include <stdlib.h>

#define TOP 3

typedef struct {
char sifra[6];
double povr;
double cena;
} PARCELA;

int main() {
PARCELA *p;
int n;
FILE *pfin, *pfout;

pfin = safe_fopen("parcele.txt", "r", 1);
n = read_file(pfin, &p);
fclose(pfin);

free(p);

return 0;
}
int read_file(FILE *pf, PARCELA **pp) { // prenos niza po pokazivacu
int i=0;
PARCELA *tmp, t;

while (fscanf(pf, "%s %lf %lf",
t.sifra, &t.povr, &t.cena) != EOF) { // citanje jednog zapisa
i++;

if (i == 1)
tmp = (PARCELA *) calloc(1, sizeof(PARCELA)); // alokacija prvog elementa
else
tmp = (PARCELA *) realloc(*pp, sizeof(PARCELA)*i); // alokacija narednog elementa


if (tmp != NULL)
*pp = tmp;
else
exit(3);

(*pp)[i-1] = t; // upis procitanog zapisa u niza
}

return i; // broj procitanih zapisa kao povratna vrednost
}


Nisam kopirao ceo kod. Ne razumem ovaj dvostruki pokazivac (PARCELA **), ako moze neko da objasni.
Ni ovaj deo koda: (*pp)[i-1] = t; ne razumem.
 
Nazad
Vrh Dno