HI there, i am doing a TI scholing here in Holland, and for that i made a program that is part of a C and PLC programming project.
I am working on my problem for about 3 weeks now and thought i would try to see if someone here can point me into the right direction to find my problem.
in Case A of the Menu in Main i fill a linked list through a menu. it finds nicelyy the empty spot, puts the data in it what i dit put in, but the problem is that when i do that another time i have the data that i put in the second time seems to overwrite the date i put in the first time as well...
Who can help me getting into the right direction...
the complete code is below....
Code:#include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h> //#include "LaBOX_DIO.h" int parkeervak; char keuze; char identificatie[6]; char *msg="******Welkom bij de garage van TI-groep 1 ****\n"; char *msg0="******Welkom bij de garage van TI-groep 1 ****\n"; char *msg1="De garage is op dit moment in gebruik"; char *msg2="******een ogenblik geduld AUB.*******"; char *msg3="***Sorry onze parkeerplaats is helaas vol***\n"; char *msg4="U kunt wachten of het ergens anders proberen"; char *msg5="**** keuze menu *****"; char *msg6="A: Wilt U uw auto parkeren?"; char *msg7="B: Wilt U uw auto ophalen?"; char *msg8="S. Stoppen."; char *msg9="Maak een keuze:"; char *msg10="Dit is foutieve keuze, kies opnieuw"; char *msg11="***Een ogenblik geduld AUB uw auto wordt opgehaald***\n"; char *msg12="***Een ogenblik geduld AUB uw auto wordt geparkeerd***\n"; char *msg13="Uw auto staat klaar voor vertrek:\n"; char *msg14="\n\n\n\n***** Voer uw ophaalcode in: *****\n"; char *msg15="\n\n\n\n***** Uw auto is geparkeerd. *****\n"; char *msg16="Wij proberen een parkeerplaats te reserveren\n"; char *msg17="Het is helaas niet gelukt een parkeerplaats te reserveren\n***** probeert U het nog eens *****\n"; char *msg18="***Error: kan de betreffende file niet openen**"; char *msg90="***nog een prettige dag verder:**"; char *msg99="***testmessage om werking te controleren:**"; int controleerbusybit() /* controle van busybit 7 */ { int p=0; //LaBOX_Open(); //LaBOX_DigitalGetBit(7,&p); //LaBOX_Close(); return p; } // aanmaken en parkeervak functies staan hieronder struct parkeervak { unsigned char Vak; char *Auto_Id; struct parkeervak* VolgendePtr; }; struct parkeervak* NieuwParkeerVak(void) { void* ptr = malloc(sizeof(parkeervak)); // voeg nieuw item toe return ((struct parkeervak*) ptr); // return pointer naar nieuwe item }; struct parkeervak* MaakParkeerVakken(int AantalVakken) { struct parkeervak* NieuwePtr; struct parkeervak* StartPtr; // pointer naar 1ste item in de lijst int i; StartPtr = NieuwParkeerVak(); // alloceer item no 1 NieuwePtr = StartPtr; for (i=0;i<AantalVakken-1;i++) // nog de resterende parkeervakken { NieuwePtr->Vak = i; NieuwePtr->Auto_Id = "leeg"; // alloceer volgend parkeervak NieuwePtr->VolgendePtr = NieuwParkeerVak(); NieuwePtr = NieuwePtr->VolgendePtr; }; NieuwePtr->Vak = i; NieuwePtr->Auto_Id = "leeg"; NieuwePtr->VolgendePtr = NULL; // einde van de lijst return (StartPtr); }; void AlleParkeerVakken (struct parkeervak* StartPtr) { // begin aan de kop van de lijst struct parkeervak* HuidigePtr = StartPtr; while (HuidigePtr != NULL) { printf("%d %s\n",HuidigePtr->Vak, HuidigePtr->Auto_Id); HuidigePtr = HuidigePtr->VolgendePtr; } }; struct parkeervak* ZoekParkeerVak (struct parkeervak* StartPtr, int ZoekWaarde) { // begin aan de kop van de lijst struct parkeervak* HuidigePtr = StartPtr; while (HuidigePtr != NULL && HuidigePtr->Vak != ZoekWaarde) { HuidigePtr = HuidigePtr->VolgendePtr; } if (HuidigePtr->Vak == ZoekWaarde) return (HuidigePtr); else return (NULL); }; struct parkeervak* ZoekAuto (struct parkeervak* StartPtr, char* ZoekWaarde) { // begin aan de kop van de lijst struct parkeervak* HuidigePtr = StartPtr; while (HuidigePtr != NULL && HuidigePtr->Auto_Id != ZoekWaarde) { HuidigePtr = HuidigePtr->VolgendePtr; } printf("%s",HuidigePtr->Auto_Id); //if (HuidigePtr->Auto_Id == ZoekWaarde) if( !strcmp(HuidigePtr->Auto_Id, ZoekWaarde)) return (HuidigePtr); else return (NULL); }; struct parkeervak* controleophaalcode (struct parkeervak* StartPtr, char* ZoekWaarde) { // begin aan de kop van de lijst struct parkeervak* HuidigePtr = StartPtr; while (HuidigePtr != NULL && HuidigePtr->Auto_Id != ZoekWaarde) { HuidigePtr = HuidigePtr->VolgendePtr; } if (HuidigePtr->Auto_Id == ZoekWaarde) return (HuidigePtr); else return (NULL); }; struct parkeervak* controlevrijeplaats (struct parkeervak* StartPtr, char* ZoekWaarde) { // begin aan de kop van de lijst struct parkeervak* HuidigePtr = StartPtr; while (HuidigePtr != NULL && HuidigePtr->Auto_Id != ZoekWaarde) { HuidigePtr = HuidigePtr->VolgendePtr; } if (HuidigePtr->Auto_Id == ZoekWaarde) return (HuidigePtr); else return (NULL); }; //parkeer functies staan hieronder char reserveerparkeerplaats() { printf ("%s\n","voer uw kenteken in!"); scanf("%s",&identificatie); return (identificatie); } void setparkeerbit() { } //ophaalfuncties staan hieronder char ophaalcodeinvoer() { char c[6]; printf ("%s\n","voer uw kenteken in!"); scanf("%s",c); return c; } char setophaalbit() { } char geefparkeerplaatsvrij() { } int main() { unsigned int a=0; unsigned int b=0; int i=0; unsigned int x=0; char keuze; char c[6]; struct parkeervak* StartPtr; // pointer naar 1ste item in de lijst struct parkeervak* Ptr; printf("programma start\n\n"); StartPtr = MaakParkeerVakken(6); // initialiseer de lijst met 6 items AlleParkeerVakken(StartPtr); // Druk alles af system("PAUSE"); // alleen voor eigen controle tijdens programmeren // menu system("Cls"); do { if (controleerbusybit() == 1) /* controle garage bezig zo ja blijven controleren tot garage vrij */ { printf ("%s\n\n\n\n",msg3); printf ("%s","******een ogenblik geduld AUB.*******"); Sleep (2000); } else /* als garage niet bezig toon hoofdmenu */ {system("cls"); printf("%s\n\n\n\n",msg); printf("%s\n\n",msg5); printf("%s\n\n",msg6); printf("%s\n\n",msg7); printf("%s\n\n",msg8); printf("%s\n\n",msg9); msg=msg10; scanf("%c",&keuze); switch (keuze) { case 'A': /* Parkeergedeelte van het menu */ { Ptr = controlevrijeplaats(StartPtr,"leeg"); // controle of er een vrije plaats is if (Ptr != NULL) // gevonden? { printf("Vak %d %s gevonden\n",Ptr->Vak,Ptr->Auto_Id); printf("Pointer %d is nu huidig\n",Ptr); Sleep (2000); reserveerparkeerplaats(); // reserveren van de gevonden parkeerplaats Ptr->Auto_Id = identificatie; printf("Pointer %d is nu huidig\n",Ptr); AlleParkeerVakken(StartPtr); // Druk alles af ter controle alleen tijdens programmeren printf("Pointer %d is nu huidig",Ptr); system("Pause"); printf("Leeg vak %s gevonden\n %d",Ptr->Auto_Id, Ptr->Vak); // alleen voor eigen controle tijdens programmeren printf("Leeg vak %d gevonden\n",Ptr->Vak); // alleen voor eigen controle tijdens programmeren Sleep (2000); system("Pause"); // alleen voor eigen controle tijdens programmeren AlleParkeerVakken(StartPtr); // alleen voor eigen controle tijdens programmeren break; setparkeerbit(); // zetten van de parkeerbit voor de gevonden plaats do { if (controleerbusybit()== 0) { system("cls"); // melding bezig met parkeren Sleep(500); printf("%s\n\n\n\n\n\n\n",msg12); Sleep(3000); } else { system("cls"); //melding auto geparkeerd printf("%s\n\n\n\n\n\n\n",msg15); printf("%s\n\n\n\n\n\n\n",msg90); Sleep(3000); } } while (controleerbusybit()!= 1); // controle of de garage nog bezig is met parkeren break; } else { system("cls"); printf("%s\n\n\n\n\n\n\n",msg3); break; } } case 'B': /* Ophaalgedeelte van het menu */ ophaalcodeinvoer(identificatie); // Ptr = ZoekAuto(StartPtr,"vol"); // controle of de auto in de parkeerplaats staat if (Ptr != NULL) // gevonden? { printf("auto met code %s in vak %d gevonden\n",Ptr->Auto_Id, Ptr->Vak); Sleep (2000); geefparkeerplaatsvrij(); Ptr->Auto_Id = geefparkeerplaatsvrij; system("cls"); printf("%s\n\n\n\n\n\n\n",msg3); setophaalbit(); do { if (controleerbusybit()== 0) { system("cls"); // melding bezig met parkeren Sleep(500); printf("%s\n\n\n\n\n\n\n",msg12); Sleep(3000); } else { system("cls"); //melding auto geparkeerd printf("%s\n\n\n\n\n\n\n",msg15); printf("%s\n\n\n\n\n\n\n",msg90); Sleep(3000); } } while (controleerbusybit()!= 1); // controle of de garage nog bezig is met parkeren break; } else { printf("Niets gevonden\n"); Sleep(3000); break; } case 'S': /* Einde van het programma */ return; } } } while(1); }
Regards Fred



LinkBack URL
About LinkBacks



