Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Povezana lista - program sa manom

[es] :: C/C++ programiranje :: Povezana lista - program sa manom

[ Pregleda: 1963 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Povezana lista - program sa manom01.03.2008. u 20:58 - pre 196 meseci
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;
}
 
Odgovor na temu

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Re: Povezana lista - program sa manom02.03.2008. u 21:54 - pre 196 meseci
Dajte ljudi pomozite. Ovo mi je vrlo vazno. Sigurno neko nesto zna. Ako treba jos neko pojasnjenje recite.
 
Odgovor na temu

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Re: Povezana lista - program sa manom03.03.2008. u 19:09 - pre 196 meseci
X-FILES pomozi. Ako treba upload-ovacu dbf bazu.
 
Odgovor na temu

brankec
Bosanski Brod

Član broj: 140157
Poruke: 161
*.teol.net.



Profil

icon Re: Povezana lista - program sa manom03.03.2008. u 21:17 - pre 196 meseci
Dosao sam do novog saznanja (ubacio sam dodatni kod za testiranje uspesnosti alocirane memorije), a to je da mi alociranje memorije za prvih 410 elemenata funkcionise, a onda ne. Nemoguce je da nemam dovoljno memorije. Sta bi to moglo biti i kako da izvrsim dodatna testiranja ovog problema.
S druge strane i pored neuspeha alociranja memorije, nije mi jasno kako da ispis .radnik i .neto funkcionisu bez problema.

Code:

while(i<415)
{
novi=malloc(sizeof(PODACI));
if(novi!=NULL)
{
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++;
}
else
{
printf("\nGreska prilikom alociranja memorije\n");
break;
}
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: Povezana lista - program sa manom

[ Pregleda: 1963 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.