Zum Inhalt springen

verkettete liste - fehlermeldungen syntaxfehler


Empfohlene Beiträge

Geschrieben

Guten tag allerseits ;) ... ich habe mein programm folgendermaßen umgeschrieben:

# include <stdio.h>

# include <malloc.h>										//*Speicherverwaltung

# include <stdlib.h>

# include <string.h>

# include <math.h>


	struct nutzer										

	{

		char vorname [30];

		char nachname [40];										//* Datenteil

		char passwort [20];

		char kontonummer [10];

		struct nutzer *next, *previous;							//* Zeiger auf das benachbartes Listenelement, next=Nachfolger, previous=Vorgänger

	};

	struct nutzer *anfang=NULL;


	struct neuer_nutzer

	{

		char telefonnummer[15];

		char email[30];

		int plz[6];

		char wohnort[40];

	};


//*--------------------------------------------------------------------------*/

//* Code für erstes Element der Liste


	anfang=(struct nutzer*)malloc(sizeof(struct nutzer));

	strcpy (anfang->vorname,vorname);

	strcpy (anfang->nachname,nachname);

	strcpy (anfang->passwort,passwort);

	strcpy (anfang->kontonummer,kontonummer);


	if ((anfang=(struct nutzer*)malloc(sizeof(struct nutzer)))==NULL)

	{

		printf ("Es ist kein Speicherplatz vorhanden\n");

		return;

	}


	anfang->next=NULL;

	ende=anfang;

	ende->previous=NULL;

}


//*--------------------------------------------------------------------------*/

//* Code für weitere Elemente in der Liste

else if (anfang!=NULL)

{

	zeiger=anfang

		while(zeiger->next!=NULL)

			zeiger=zeiger->next;									//*läuft bis ans Ende

	zeiger->next=(struct nutzer *)malloc(sizeof(struct nutzer));


	zeiger=zeiger->next;											//*Zeiger auf neuen Speicherplatz

	strcpy (zeiger->vorname,vorname);

	strcpy (zeiger->nachname,nachname);

	strcpy (zeiger->passwort,passwort);

	strcpy (zeiger->kontonummer,kontonummer);


	zeiger->next=NULL

}


//*--------------------------------------------------------------------------*/

void oeffnen (char *name)									//* Unterprogramm

{

	FILE *zeiger_datei_nutzer;	

	struct nutzer *zeiger;	

	//*int i=0;


	zeiger_datei_nutzer=(nutzer *)malloc(sizeof(nutzer));

	zeiger_datei_nutzer=fopen("nutzer.txt","w+b");


	if (zeiger_datei_nutzer==NULL)

	{

		printf ("Es gab ein Problem beim öffnen der Datei\n");

		getch();

		return (-1);

	}

	else(zeiger_datei_nutzer!=NULL);

	{

		puts ("Vorgang wird ausgeführt! Drücken Sie bitte eine Taste");

		getchar();

		fprintf(zeiger_datei_nutzer,"%s|%s|%s|%s\n",zeiger->vorname,zeiger->nachname,zeiger->passwort,zeiger->kontonummer);

		zeiger=zeiger->next;

	}


	fclose(zeiger_datei_nutzer);

}

nun möchte ich erstmal wissen .. ob die reihenfolge so in ordnung ist und ob es jetzt der aufg.stellung entspricht :hells:

ich kriege immer wieder fehler die mit syntax zu tun haben z.b. in zeile 29 "Syntaxfehler:'->'" "Syntaxfehler:')'" ... kann mir da jemand helfen

Geschrieben
nun möchte ich erstmal wissen .. ob die reihenfolge so in ordnung ist und ob es jetzt der aufg.stellung entspricht
Zur Reihenfolge kann man nichts sagen, weil dein Programm keine main-Funktion, und damit keinen Anfang hat. Ein C-Programm wird nicht einfach von oben nach unten abgearbeitet.

Außerdem steht der größte Teil des Codes gar nicht in Funktionen, das geht nicht.

Geschrieben
Außerdem steht der größte Teil des Codes gar nicht in Funktionen, das geht nicht.

das heißt jetzt was für mich?

und was is das problem mit den syntaxfehlern

Geschrieben
das heißt jetzt was für mich?
Du hast Anweisungen dort, wo keine sein dürfen. Anweisungen müssen innerhalb von Funktionen stehen.

Funktionen strukturieren deinen Code. In der main-Funktion beginnt die Ausführung deines Programms. Das ist aber absolutes Grundlagenwissen.

und was is das problem mit den syntaxfehlern
Das Problem ist, dass der Compiler Anweisungen findet, wo keine stehen dürfen, siehe oben.

// Hier dürfen keine Anweisungen stehen. 
// Kein malloc oder strcpy oder so.

void DasIstEineBeispielfunktion()
{
// Hier dürfen Anweisungen stehen.
}

// Hier dürfen wieder keine Anweisungen stehen.[/code]

Geschrieben

Darüber hinaus gibt es auch noch andere Unsinnigkeiten...

[B]anfang=(struct nutzer*)malloc(sizeof(struct nutzer))[/B];

	strcpy (anfang->vorname,vorname);

	strcpy (anfang->nachname,nachname);

	strcpy (anfang->passwort,passwort);

	strcpy (anfang->kontonummer,kontonummer);


	if (([B]anfang=(struct nutzer*)malloc(sizeof(struct nutzer)))[/B]==NULL)

	{

		printf ("Es ist kein Speicherplatz vorhanden\n");

		return;

	}

Was soll das doppelte "malloc" bewirken?
else if (anfang!=NULL)
Hängt vollkommen in der Luft, da es nicht direkt auf eine Abfrage folgt.

	zeiger=anfang

"zeiger" ist nirgendwo definiert.
else(zeiger_datei_nutzer!=NULL);

Das schreit förmlich nach "Syntax-Fehler".

Geschrieben
Darüber hinaus gibt es auch noch andere

else(zeiger_datei_nutzer!=NULL);

Das schreit förmlich nach "Syntax-Fehler".

Nö.

Syntax ist ok, nur unsinnig ein leeres else zu haben.

(btw: das fclose sollte ins Else mit rein.)

weitere Anmerkung: Rückgabetyp von malloc zu casten ist nicht schön.

Geschrieben
Nö.

Syntax ist ok, nur unsinnig ein leeres else zu haben.

Ich bitte um Entschuldigung, Du hast natürlich recht. Das sah mir auf den ersten Blick so merkwürdig aus, dass ich es nicht selbst ausprobiert habe.

Geschrieben

Hallo,

ich will Klotzkopp unterstützen. Ich habe mal, im Selbststudium gelernt, daß ein C-Programm etwa so aussieht:


//Direktiven


#include <

.

.

.


//Deklarationen 


//Datenstrukturen


struct nutzer

{

.

.

.

};


// Funktionen


ausgabe Funktion(Eingabe);

.

.

.


//Hauptfunktion


void main()

{

.

.

.

}


// Implemetirung der Unterfunktionen


So sollte das Programm aussehen. Ansonsten kannst du bei Prof. Beck, der an Eurer Schule lehrt, einen Header zur verketteten Liste aufrufen. Da steht übrigens auch, daß du 17 Lehrveranstaltungen besucht haben müßtest.

LG

Andre'

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...