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
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'

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...