*freu*

habe es jetzt schon so zimlich fertig, bis auf die "import"-funktion, die wir aber noch nicht machen mussten!!!

danke NumberFive füe deine hilfe

MfG
baldi123

PS: der fertige Code:
Code:
//   Programm...: figuren.c
//  Ersteller...: Baldinger Patrick
//      Datum...: 14.02.05
//
// Zweck...: Verwaltung der Figuren-DB
//
//

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

struct TFigur
{
    char  name[30];		// Name der Figur
    int   xpos;			// X-Position auf dem Feld (0...1000)
    int   ypos;			// Y-Position auf dem Feld (0...1000)
    int   energie;		// Lebensenergie 0...100
    int   typ;			// A=Mensch Z=Zwerg E=Elb O=Ork M=Magier H=Hobbit
};

//Globale Variable und Konstante
const int ARRLEN = 10;  		// Länge des Figuren-Array
int ACTLEN = 0;					// nächste freie Stelle im Array
int saveit = 0;					// Merker: Wenn Änderugen, dann speichern vor Ende
struct TFigur figuren[ARRLEN]; 	// Figuren-Array
char datei[] = "figur1";		// Name der Datei in der die Datensätze gespeichert werden

// Funktionsprototypen
void Insert(void);
int  InsertRecord(struct TFigur);
void Delete(void);
void Save(void);
void Import(void);
void Load(void);
void Display(void);

// Hauptprogramm
void main(void)
{

    char  iAuswahl;
    Load();			// Beim Programmstart eventuell vorhandene Datensätze aus Datei laden

    do
    {
        system("CLS");							// Bildschirm löschen
        printf("    Funktion auswaehlen\n");
        printf("    ===================\n\n");
        printf("    1...Figur anlegen\n");
        printf("    2...Figur loeschen\n");
        printf("    3...Figuren anzeigen\n");
        printf("    4...Speichern\n");
        printf("    5...Import\n\n");
        printf("    0...beenden\n\n");

        printf("Auswahl -> ");
        fflush(stdin);							// Tastaturpuffer leeren
        scanf("%i",&iAuswahl);

        switch(iAuswahl)
        {
            case 1:
                Insert();
                break;
            case 2:
                Delete();
                break;
            case 3:
                Display();
                break;
            case 4:
                Save();
                break;
            case 5:
                Import();
                break;
            case 0:
                if (saveit)
                {
                    iAuswahl = 99;
                    printf("\n\aBitte Daten zuerst speichern!\n");
                    system("pause");
                }
                break;
            default:
                printf("\n\aUngueltige Auswahl!\n");
                system("pause");
        }

    } while (iAuswahl != 0);

    printf("\n\nPROGRAMM-ENDE!\n\n");

    return;
}

void Insert(void)
{
    // Liest die Daten einer Figur in die Struktur f1 ein. Zum eigentlichen Einfügen der Daten in das
    // Array wird die Funktion InsertRecord aufgerufen. Der Rückgabewert von InsertRecord wird
    // In der Funktion Insert() nicht behandelt.

	struct TFigur f1;
	int y;

	saveit = 1;   // Datenbank wird verändert

	printf("   Name: ");
	scanf("%s",&f1.name);

	printf("    Typ: ");
	scanf("%s",&f1.typ);

	printf("  X-Pos: ");
	scanf("%i",&f1.xpos);

	printf("  Y-Pos: ");
	scanf("%i",&f1.ypos);

	printf("Energie: ");
	scanf("%i",&f1.energie);

	y = InsertRecord(f1);

	printf("\nDatensatz eingefuegt - %i Saetze sind vorhanden\n",ACTLEN);
    system("pause");
	return;
}

int InsertRecord(struct TFigur f)
{
    // Fügt einen neuen Datensatz am Ende des Arrays "figuren" ein
    // Rückgabewert InsertOK:	1...Falls der Satz eingefügt werden kann
	//		                    0...Wenn Puffer voll, nicht eingefügt
	//						   -1...Wenn Figur schon vorkommt, nicht eingefügt
    // Eingabeparameter f:		Strukturvariable f, wird in Array "figuren" eingefügt
	// Die Funktion InsertRecord() darf keinerlei Ausgaben machen, da sie auch bei der
	// Importfunktion aufgerufen wird.

	int InsertOK = 1;   // Standardvoraussetzung
	int ctr;   // Kontrollhilfszeichen
	int p;

	if(ACTLEN<10)
	{

         for(p = 0; p < ACTLEN; p++)
        {
             if(strcmp(figuren[p].name,f.name) == 0)
             {
                  return -1;
             }
         }

		 figuren[ACTLEN] = f;

		 ACTLEN++;
	}
	else
	{
        InsertOK = 0;
	}

	return InsertOK;

}

void Save(void)
{
    // Diese Funktion schreibt den Inhalt des Arrays "figuren" in die Datei
    // Es wird angezeigt, wieviele Sätze in die Datei gespeichert wurden
    // Der Merker "saveit" wird auf 0 gesetzt

	FILE *out;
	int i;

	out = fopen(datei,"wb");
	if (out == NULL)
	{
		printf("\nDie Datei kann nicht geoeffnet werden! - Keine Saetze geschrieben!");
	}
	else
	{
		for (i = 0; i < ACTLEN; i++)
		{
			fwrite(&figuren[i],sizeof(figuren[i]),1,out);
		}
		fclose(out);
		printf("\nEs wurden %i Datensaetze eingeschrieben\n",i);
		saveit = 0;
	}

	system("pause");
	return;
}

void Load(void)
{
    // Diese Funktion wird beim Programmstart aufgerufen und liest bereits vorhandene
    // Datensätze in das Array "figuren" ein.
    // Am Ende wird die Anzahl der gelesenen Sätze angezeigt

	FILE *in;
	struct TFigur f;   // Variable auf TFigur zum Einlesen
	int counter = 0;

	in = fopen(datei,"rb");
	if (in == NULL)
	{
		printf("\nDie Datei kann nicht geoeffnet werden! - Keine Saetze geladen!");
	}
	else
	{
		fread(&f,sizeof(f),1,in);
		while(!feof(in))
		{
			counter++;
			figuren[ACTLEN++] = f;
			fread(&f,sizeof(f),1,in);
		}
		fclose(in);
		printf("Es wurden %i Datensaetze eingelesen\n",counter);
	}

	system("pause");
    return;
}

void Display(void)
{
    // Diese Funktion zeigt die Datensätze im Array "figuren" an
    // Am Ende wird die Anzahl der angezeigten Sätze angezeigt

	int i;
	printf("\nName der Figur       Typ XPos YPos Energie\n");
	for (i = 0; i < ACTLEN; i++)
	{
		printf("%-21s",figuren[i].name);
		printf(" %c ",figuren[i].typ);
		printf("%5i",figuren[i].xpos);
		printf("%5i",figuren[i].ypos);
		printf("%5i\n",figuren[i].energie);
	}
	printf("\nEs wurden %i Datensaetze angezeigt!\n",i);
	system("pause");
    return;
}

void Delete(void)
{
    // Es wird der Name der Figur eingelesen. Diese wird dann im Array gesucht.
    // Falls sie gefunden wird, wird sie aus dem Array entfernt. Alle Arrayelemente
    // rechts des gelöschten Elements werden um eine Position nach links verschoben
    // Im Falle des Löschens muss die Variable ACTLEN um eins vermindert werden und
    // ebenso muss die Variable "saveit" gesetzt werden

    return;
}

void Import(void)
{
    // Liest den Namen einer Textdatei (CSV-Datei) ein, in der die einzelnen Werte durch ';' getrennt stehen
    // Die Reihenfolge der Werte entspricht der Reihenfolge der Daten in der Struktur
    // Die eingelesene Zeichenkette soll an die Funktion Analyse() übergeben werden. Analyse() liefert
    // als Rückgabewert die einzelnen Werte in einer Variable vom Typ TFigur
    // Zum Einfügen in das Array soll wiederum die Funktion InsertRecord() verwendet werden. Ist das Array
    // "figuren" voll (wird durch den Rückgabewert von InsertRecord() angezeigt), dann muss der Importvorgang
    // abgebrochen werden

    return;
}

struct TFigur Analyze(char t[])
{
	// Zerlegt den Eingabestring t in die Komponenten
	// ->Name
	// ->Typ
	// ->XPosition
	// ->YPosition
	// ->Energie
	// und gibt diese in der Strukturvariable RetVal zurück

	struct TFigur RetVal;

	return RetVal;
}