Sledeci program ucitava podatke iz dbf baze u strukturu (koristim jednostruko povezanu listu). Koristim dva ispisa na ekran: jedan prilikom upisivanja u listu i on radi bez problema, a drugi naknadno pomocu funkcije PISI () i tu je sledeci problem: ako ucitavam prvih 410 elemenata prvi i drugi ispis su identicni (samo sto je kod drugog ispis obrnut), a ako predje (u bazi je 4628 rekorda) onda je prvi ispis u redu, a drugi ispise LISTA JE PRAZNA?? (a nebi trebala, i zasto bas na tom broju). Stvarno mi nije jasno zasto. Vrlo zbunjujuce. Nadam se da sam bio jasan u izlaganju problema. Molicu pomoc.
#include <stdio.h>
#include <alloc.h>
#include <stdlib.h>
typedef struct cvor
{
char indikator;
char radnik[6];
char nebitno[77];
char neto[14];
char nebitno2[48];
struct cvor *sledeci;
}PODACI;
int main(void)
{
FILE *fptr;
int i=0;
void pisi();
PODACI *pocetak,*novi;
pocetak=NULL;
fptr=fopen("ldprizar.dbf","r");
fseek(fptr,832,SEEK_SET);
while(i<411) /*PROBLEM - inace stoji while(!feof(fptr))*/
{
novi=malloc(sizeof(PODACI));
fread(novi,sizeof(PODACI),1,fptr);
if(feof(fptr)) goto line;
novi->sledeci=pocetak;
pocetak=novi;
fwrite(pocetak->radnik,sizeof(char)*6,1,stdout);
fwrite(pocetak->neto,sizeof(char)*14,1,stdout);
putchar('\n');
i++;
}
line: fclose(fptr);
getchar();
pisi(pocetak);
return(0);
}
void pisi(PODACI *tekuci)
{
putchar('\n');
if(tekuci==NULL)
{
printf("\n\n LISTA JE PRAZNA");
getchar();
return;
}
while(tekuci!=NULL)
{
fwrite(tekuci->radnik,sizeof(char)*6,1,stdout);
fwrite(tekuci->neto,sizeof(char)*14,1,stdout);
tekuci=tekuci->sledeci;
putchar('\n');
}
getchar();
return;
}











Povezana lista - program sa manom