[ brankec @ 22.02.2008. 21:26 ] @
Sledeci primer ilustruje moj problem:

typdef struct
{
/*ovde se nalaze CHAR promenjive ukupne velicine 148 bajta*/
}PODACI;

PODACI s[2000];

I kada hocu kompajlirati izbaci mi poruku ARRAY SIZE TOO LARGE. Sta da radim.

Koristim TURBO C 2.1.
[ burex @ 23.02.2008. 00:43 ] @
Smanji broj članova niza, a ako ti je baš potrebna tolika veličina, koristi linkovane liste:
http://en.wikipedia.org/wiki/Linked_list
[ glorius @ 23.02.2008. 12:35 ] @
Dinamicki alociraj memoriju...
[ brankec @ 24.02.2008. 14:05 ] @
Nesto mi je nejasno u vezi linkovanih (povezanih) lista:
Ako podatke ucitavam iz fajla i za to imam odgovarajucu strukturu gde smestam podatke i sad u tu strukturu dodam jos jednu pokazivacku promenjivu koja ce mi pokazivati na sledeci pokazivac u listi, zar mi to nece poremetiti ucitavanje podataka iz fajla. Ako ne, zasto ne. Ako da , sta onda da radim.
[ obucina @ 25.02.2008. 09:41 ] @
Nece, ali ce ti pokazivaci biti neispravni, tako da moras pri ucitavanju svakog elementa da azuriras pokazivace na sledeci/prethodni element liste.
[ n1tr0 @ 27.02.2008. 08:21 ] @
Prilikom snimanja podataka iz strukture u fajl nemoj upisivati pokazivace. Kada budes citao, alociraj memoriju za tu strukturu i onda azuriraj pokazivace. Najlakse ti je da napravis jednu f-ju koja ce ti dodavati element te strukture podataka na kraj (ili pocetak te liste).
[ brankec @ 27.02.2008. 20:00 ] @
Sve mi je jasno sa alociranjem memorije i azuriranjem pokazivaca, ali sledece mi nije jasno:
ako imam STRUKTURU i u njoj 15 CHAR promenjivih plus pokazivacka promenjiva, kako onda da zapisem u fajl strukturu ali bez pokazivaca. Dali moram onda svaku promenjivu strukture pojedinacno upisivati ili ima nesto drugo. Ako citavu strukturu upisujem u fajl onda bih to uradio ovako :
fwrite(*s,sizeof(PODACI),1,fptr);
[ brankec @ 27.02.2008. 21:01 ] @
Sledeci program je pokusaj ucitavanja podataka iz baze u program (strukturu).
Zbog STRUCT CVOR *SLEDECI mi se podaci ne ucitavaju kako treba (ako izbacim tu liniju koda i sledecu: -novi->sledeci=pocetak;- podaci se ucitavaju kako treba). Molim pojasnjenje ili primer koda.
Sledeci problem kod istog programa, a i kod svih ostalih koje sam pokusavao napraviti a vezani su za ovu temu je sledeci: liniju koda -printf("\n %s",novi->neto);- sam ubacio kako bih kontrolisao sta ucitavam. Medjutim, umesto da mi ispise samo znakove CHAR promenjive NETO duzine 14 znakova (u ovom primeru) on mi ispise sve znakove od neto do kraja (u ovom slucaju CHAR SIFRA). Ili ako bih stavio -printf("\n %s",novi->radnik);- ispisujemi sve znakove od RADNIK pa do SIFRA. Kako da ovo resim.

Code:

#include <stdio.h>
#include <stdlib.h>
typedef struct cvor
{
char indikator;
char radnik[6];
char stavka[2];
char oour[2];
char grupa[5];
char rad[2];
char algodb[1];
char algdop[1];
char stad[1];
char prebiva[2];
char tekmes[2];
char tekobr[2];
char bod[10];
char sati[3];
char koefa[7];
char vrboda[13];
char pojkoef[7];
char ucinak[7];
char n6[10];
char neto[14];
char bruto[15];
char obr[1];
char ggmm[4];
char prepravi[12];
char pravi_neto[12];
char sifra[6];
struct cvor *sledeci;
}PODACI;

PODACI *pocetak,*novi;

int main(void)
{
FILE *fptr;
int i=0;
pocetak=NULL;
fptr=fopen("ldprizar.dbf","r");
fseek(fptr,832,SEEK_SET);
while(i<8)
{
novi=malloc(sizeof(PODACI));
fread(novi,sizeof(PODACI),1,fptr);
novi->sledeci=pocetak;
pocetak=novi;
printf("\n %s",novi->neto);
i++;
}
printf("\n\n");
getchar();
fclose(fptr);
return (0);
}