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.

Hilfe! Structs in C

Empfohlene Antworten

Veröffentlicht

Ich habe von unserem Prof. den folgenden Quelltext erhalten:

Code:


#include  <stdio.h>																//header file für Ein-/Augabe

#include  <stdlib.h>															//header file für Standartbibliotheken

#include  <string.h>															//header file für Zeichenfolgen



struct person

{

	char *name;



	struct person *nachfolger;

};


typedef struct person person;


person * person_anlegen(char * data)

{

	person *tmp=(person *)malloc(sizeof(person));


	int laenge = strlen(data);

	tmp->name =(char *)malloc(laenge+1);

	strcpy(tmp->name, data);


	tmp->nachfolger = NULL;

	return tmp;

}


void element_einhaengen(person* element, person **listenlink)

{

	element->nachfolger = *listenlink;

	*listenlink = element;

}


void ausgabe(person *liste)

{

	person *zeiger = liste;


	while(zeiger != NULL)

	{

		printf("Name: %s ,\n", zeiger->name);

		zeiger=zeiger->nachfolger;

	}

	printf("Ende \n");

}


void ausgabe_file(person *liste, char * filename)

{

	FILE * file;

	person *zeiger = liste;

	file = fopen(filename, "w+");

	if(file != NULL)

	{

		while(zeiger != NULL)

		{

			fprintf(file, "Name: %s\n", zeiger->name);

			fprintf(file, "#\n");

			zeiger=zeiger->nachfolger;

		}

		fprintf(file,"## \n");

	}

	fclose(file);

}


void einlesen_file(person **listenlink, char * filename)

{

	FILE * file;

	char wort[100];

	file = fopen(filename, "r+");

	if(file != NULL)

	{

		while(fscanf(file, "%s", wort) && strcmp(wort, "##"))

		{

			if(strcmp(wort,"#"))

			element_einhaengen(person_anlegen(wort),listenlink);

		}

	}

	fclose(file);

}


void leeren_file(person **listenlink)

{

	person *zeiger = *listenlink;

	while(zeiger != NULL)

	{

		*listenlink = (*listenlink)->nachfolger;

		free(zeiger->name);

		free(zeiger);

		zeiger = *listenlink;

	}

	*listenlink = NULL;

}






main()

{		

	person *anfang = NULL;

	char wort[20];

	printf("Bitte Namen eingeben:");

	scanf("%20",wort);

	wort[19]=0;

	element_einhaengen(person_anlegen(wort),&anfang);


        //ausgabe();

	//ausgabe_file(,"nutzer.txt");

}

Meine Fragen dazu sind:

1. Kann man die Prozeduren problemlos im main() nutzen, oder ist der Quelltext unvollständig.

2. Welche Parameter muss ich den letzten beiden auskommentierten Funktionen übergeben, damit sie funktionieren? Ich hab schon alles ausprobiert was mir eingefallen ist.

Kann mir bitte jemand helfen?

Es geht mir nur um das Verständniss. :new

1. Kann man die Prozeduren problemlos im main() nutzen, oder ist der Quelltext unvollständig.

Hab ich gemacht:

g++ test.cpp  

=> kein Fehler => Syntaktisch richtig, also nutzbar

Ich hab schon alles ausprobiert was mir eingefallen ist.

Ja mein Prof sagte immer das man lieber Programmieren lernen sollte anstelle alles auszuprobieren.

Ich habe von unserem Prof. den folgenden Quelltext erhalten:

Aus deiner Fragestellung entnehme ich das du entweder so wenig Ahnung von C hast das du noch nicht mal ne ordentliche Frage dazu formolieren kannst, oder aber das du zu faul dazu bist.

Im ersten Fall würde ich dir raten, kein Fach im Studium zu belegen das mit Programmieren zu tun hat, weil in denen muss man immer Syntax lernen. (Ich hoffe du bist kein Informatiker)

im zweiten Falle würd ich sagen Pech gahabt.

Nur so aus interesse und die Frage mein ich ernst, was Studiierst du eigentlich? (Bachelor, Master)?

Die genaue Frage lautet: Welchen Wert muss ich Ausgabe() übergeben, damit ich die aufgenommen Liste ausgeben kann. Das ist das einzige was ich nicht erfassen kann. Ich kann programmieren, sonst wär ich nicht im letzten Semester durch die Praktika gekommen. Nur haben wir uns einfach zu wenig mit Zeigern und Structs befasst.

Bearbeitet von Koenig13

... studier ich Wi-Info und hab mein Abitur in Informatik abgelegt.

das dacht ich auch, nur kommt dann folgende Ausgabe: ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ

Ich habs: bei scanf stand nur %20. Da fehlte nur das ein s->%20s

Also bis ich die Aufgabe gleich in 2 Foren eingestellt hättte

(ähm auch mit dem gleichen Text), da hätt ichs dann schon selber nachgeschlagen.

Hilfe! Structs in C - Forum de Luxx

Ich bin bei sowas einfach nur Sprachlos,

was mich immer so entsetzt ist diese wie soll ich sagen, faulheit.

Ein Studium sollte zu selbstständigen und wisenschaftlichen Arbeiten befähigen. Gut du hast das Forum vermutlich selbst bedient, das muss man dir lassen, ich bin entsetzt.

Ach ja die rechtschreibfehler und tippfehler dürft ihr behalten.

Was soll ich sagen. Wenns Faulheit wäre, hätte ich das schon vor 2 Wochen reingestellt. Jetzt ist das nur noch Verzweiflung. Ich hab schon Stunden mit Nachschlagen verbracht, nur find ich nirgendwo ne eindeutige Erklärung.

Oder kennt ihr gute Quellen, ich will meinen guten Willen zeigen.

Danke, das werd ich mir zu Herzen nehmen und sehe dieses Thema als abgeschlossen.

Hallo,

mir kommen die Funktionen in dem Quelltext inzwischen sehr bekannt vor. Es scheint um das selbe Log-In Problem mit verketteter Liste zu gehen, dass wir schon an mehreren anderen Stellen hatten. Dazu passt, dass dort auch WirtschaftsInfo studiert wurde, nd die auch keine "Ahnung" vo Listen und Strukturen hatten.

Ich kann programmieren, sonst wär ich nicht im letzten Semester durch die Praktika gekommen. Nur haben wir uns einfach zu wenig mit Zeigern und Structs befasst.

Was soll denn bitte das Programm machen?

Bis jetzt liest es einen Text ein, speichert diesen im Speicher und gibt eine Datei aus. Beides hat nichts miteinander zu tun. Der Speicher wird nicht mal wieder freigegeben.

Wie schon jemand schrieb, da fehlen Grundlagen, denke ich.

Blub!

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.