[c++] list probleem

Pagina: 1
Acties:

  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
In de onderstaande code probeer ik naar het goede element te gaan van een lijst, dan heeft dat element als private data element ook een lijst en die wil ik gaan vullen..... alleen dat gaat fout :(

Nou gebeurt dit allemaal tijdens het inlezen van een file en afhankelijk van de eerste letter moet het een verschillend aantal dingen inlezen.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    h = fopen(filename2,"r");
    ListIterator<CombiPtr> iter(mCombinationPtr->mCombiList);
    while(!feof(h))
    {
        fscanf(h,"%s",test);
        if(!strcmp(test,"C" ))
        {
            fscanf(h,"%s %s %s %s %s %s %s %s %s", Temp1,Temp15,Temp16,Temp2,Temp3,Temp4,Temp5,Temp6,Temp7,Temp8);  
            for(iter.GotoBegin();!iter.AtEnd();iter.GotoNext())
            {
                if(!strcmp(Temp1,iter.GetElement()->mTractorPtr->mTractorName))
                {
                    if(!strcmp(iter.GetElement()->mTrailerPtr->mTrailerName,Temp15))
                    {
                        if(!strcmp(iter.GetElement()->mDriverPtr->mDriverName, Temp16))
                        {
                            iter.GetElement()->mStart = atoi(Temp5);
                            iter.GetElement()->mEnd = atoi(Temp6); // goede iter.GetElement te pakken hier
                        }
                    }
                }
            }
        }
        if(!strcmp(test,"R"))
        {
            fscanf(h,"%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",Temp2,Temp3,Temp1,Temp15,Temp16,Temp15,Temp4,Temp5,Temp6,Temp7,Temp8,Temp9,Temp10,Temp11,Temp12,Temp13,Temp14);           
        }
        if(!strcmp(test,"S"))
        {
            fscanf(h,"%s %s %s %s %s %s %s %s %s %s %s %s %s", Temp1,Temp15,Temp16,Temp2,Temp17,Temp4,Temp5,Temp6,Temp7,Temp8,Temp9,Temp10,Temp11);     
            string Test = Temp16;
            iter.GetElement()->mOrderList.GetSize();
            //iter.GetElement()->mOrderList.AddAtEnd(Test);
        }
    }
    fclose(h);


Hij crashed nu altijd als ik iets wil doen met de correcte iter.GetElement()....
Terwijl hij dus wel netjes eerst door stap C en R gaat.....

Iemand enig idee?

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Ten eerste: feof() is niet predicitef, het vertelt je niet of je volgende read gaat lukken. Die test moet dus na elke fscanf.
Ten tweede: je gebruikt een onoverzichtelijke hoeveelheid variabelen TempXX, die allemaal
blijkbaar char buffers zijn. Eén foute buffergrootte en je hebt een slecht te debuggen probleem. Gebruik gewoon std::string oid
Ten derde, je vertelt niet eens wat voor list je gebruikt. De standaard C++ list is std::list, en die heeft een heel andere syntax.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Welke fout krijg je?
Ben je zeker dat je geen unallocated memory uitleest of ernaar schrijft, etc....
Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to
remove errors, but the meaning that really matters is to see into the execution of a program by examining
it. A programmer that cannot debug effectively is blind.
Uit 'How to be a programmer' van Robert L. Read

https://fgheysels.github.io/


  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
tis een geheugen fout.. das het probleem... zijn overigens allemaal char* en nou ja de bedoeling is dat ik die convert naar string in dan de string toevoeg aan die lijst.

Als ik niet regel 32 of 33 uitvoer... geeft het geen enkel probleem...
De waarde van Test is ook gewoon prima... dus ik snap het niet.....

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
uhm never mind... de fout zit al in de list... de mCombiList
Die kent die niet... en geeft daar geen fout op maar als je hem probeert te gebruiken wel


edit: probleem opgelost: Hij onthield niet wat iter.GetElement() was verder op. Dus even een temp variabele gemaakt en dat werkte.

[ Voor 32% gewijzigd door Lord_T op 26-08-2003 19:50 ]

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Maar waarom voldoet std::list niet eigenlijk?
Waarom zou je perse voor een andere lib kiezen als de meest portable en geteste library van C++ bijgesloten zit ;)

  • TaXaN
  • Registratie: April 2001
  • Laatst online: 08-09-2023
^^^ wat hij zegt

En maak ook best van die if's met strcmp eens if - else if - else if, dat worden al de andere if'n niet uitgevoerd als er één if lukt.

A polar bear is a rectangular bear after a coordinate transformation.

Pagina: 1