[ Bury @ 15.06.2006. 19:10 ] @
Halo,

nemam pojma kako da pocinjem.
Ja moram za jedan praktikum dynamische listen programirati, i za to moram jedan file iscitati, koj tako izgleda:

Anton 20 2 15 1 -99 Otto 3 1 -99 Tim 23 2 -99 Karl 31 1 22 2 -99

prvo sto ne znam je, da li cijelu file da iscitam, ili samo do -99, jer uvijek kad dodje -99 trebam sa malloc da produciram jedan novi struct...
i tako dalje, samo problema....

i sorry, da ne pisem tako dobro nas, ali skoro i nikada nepisem ;)

hvala za pomoc

pozdrav, boris





[ z@re @ 15.06.2006. 19:32 ] @
Daj samo deklaraciju te strukture zaljepi ovdje, jer mi nije jasno u kakvom su odnosu ovi brojevi sa imenima (ima 5 pa 3, 3 pa 5).

Jel moras radit sa tekstualnim datotekama? Ako vec imas dinamicku listu ciji su ti elementi nekakve strukture, mnogo je bolje iscitavat i pisat u file na binaran nacin, jel ti fread(); i fwrite(); funkcije automatiziraju kompletnu proceduru, bilo jedan zapis ili polje.
[ Bury @ 15.06.2006. 20:30 ] @

Anton 20 2 15 1 -99 Otto 3 1 -99 Tim 23 2 -99 Karl 31 1 22 2 -99


struct mitglied {
char name[10]; for example: Anton
struct mitglied *next;
struct pkt *betreuer;
};

struct pkt {
int punkte; 20
struct wettb *Ref;
struct pkt *next;
};

struct wettb {
int wettbewerb; 2
int kenng;
}kennung1, kennung2;


onda novi stuct pkt 15
" " struct wettb 1


uvijek kad dode -99 pocinjem sa novim structom "struct mitglied"

nadam se, da neko to razumije, trebao bi prvo samo, da mi neko objasni, kako da iscitam file
[ Bury @ 15.06.2006. 20:39 ] @

evo ovdje je link, na kojim mozete nac moj zadatak


http://www.gm.fh-koeln.de/~em317/pawel/VereinLi.pdf


vec sada puno hvala vama

boris
[ z@re @ 15.06.2006. 22:25 ] @
Evo ovako : iscitaj tu recenicu iz fajla u neki (char *). Preko strstr(); funkcije nadji prvu poziciju od "-99". Mallociraj opet jedan (char *), duzine rezultata adresnog pomaka izmedju adrese prvog (chara *) i adrese koju je strstr vratio. Kopiraj sad dio iz originalnog stringa u ovaj (ono do -99).

Sad fino pomakni pocetnu adresu prvog (char *) za onoliko koliko smo iskopirali u prvi string, i za jos cetri bajta (-, 9, 9, razmak). Proceduru opet ispocetka, sve dok totalno ne ispraznis pocetni string. Tako ces fino dobit njegove subsetove.

Onda sa sscanf(); izskeniraj te subsetove, da izvuces iz njih imena i brojeve. Kad izvuces ime, kreiras jedan element prve liste, broj druge, itd...

[ Bury @ 17.06.2006. 14:36 ] @
Hvala puno za pomoc, ali moj problem je da sam stvarno jedan pocetnik :(

nemam pojma, kako taj c-code mogo da izgleda....

je bi bilo moguce, da mi neko taj c code napise, kako da iscitam taf file...

ono drugo sa structurom i pointerom ja razumijem, samo ono sa filom ne...



[ Bury @ 17.06.2006. 23:01 ] @
void einlesen(void)
{
char *str, *s, *p;
int a= 0, i=1;

while ( !feof(eingabe) )
{
fgetc(eingabe);
i++;
}
rewind(eingabe);

if (( str = (char *) malloc(i)) == NULL)
{
printf( "Nicht genug Speicher, um den Puffer zu allokieren\n");
exit(1);
}

while ( !feof(eingabe) )
{
*(str+a)= fgetc(eingabe);
a++;
}

s= strstr(str, "-99");

a= s-str;

if (( p = (char *) malloc(a)) == NULL)
{
printf( "Nicht genug Speicher, um den Puffer zu allokieren\n");
exit(1);
}

strncpy(p, str, a);

sscanf() ??????????????????????????? kako da ovo napravim???

liste();

str= (str+a+4);
}