[ brankec @ 01.03.2008. 20:58 ] @
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. Code: #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; } |