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