Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

verkettete liste - fehlermeldungen syntaxfehler

Empfohlene Antworten

Veröffentlicht

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

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.

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

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]

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

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.

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.

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'

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.