Hallo zusammen...
Als Anfänger treibt man sich ja (zwangsläufig) gern und viel in diversen Foren herum. Und als Anfänger in (C) bin ich hier bei euch in der schönen tutorials-community gelandet... Natürlich habe ich mich mit der Hoffnung registriert, hier Antworten auf meine Fragen zu erlangen...
Ich befasse mich gerade mit der dynamischen Speicherverwaltung. Und dies im Zusammenhang mit einem kleinen Programm, welches in recht rudimentärer Art und Weise ein paar Mitarbeiter verwalten soll. (Eingabe, Ausgabe, Bearbeiten, Löschen, etc...)
Eine Bedingung ist diese, ich zitiere: "Für die Speicherung der Namen soll nur der unbedingt notwendige Speicherplatz verwendet werden."
Nun habe ich die die malloc-Anweisung so eingebaut, das ich einen Zeiger als Strukturvariable definiere. (In dieser Struktur wird auf eine weitere verwiesen, in welcher die pers. Daten des einzelnen Mitarbeiters stehen)
Anhand diesen Zeigers fordere ich über (malloc) Speicher für die Struktur an.
Diese Anforderung multiplizier ich mit der (Max_Anzahl) an Mitarbeiter.
Danach lädt er die Liste in die Struktur und es geht ganz normal weiter.
Doch das ist ja nicht unbedingt das, was gefordert ist, right? Die Speicheranforderung ist ja recht universell gehalten. Wie kann ich das jetzt nur auf den Namen bezogen realisieren?
Eine Liste mit den Mitarbeitern wird zu Beginn des Programmes geladen. Dann wird damit gearbeitet, und zum Programmende wird die Liste wieder in eine Datei geschrieben.
Hier mal die Strukturdefinitionen...
Und hier meine Definition für die malloc-Anweisung
Wenn ich das richtig verstanden habe, dann muss ich doch die Größenangabe im char-Array für die Nachnamen ([30]) herausbekommen, oder?
Wenn einer z.B. Meier heißt, dann hat er ja bloß 5 Buchstaben, dann noch das '\0' und er wäre fertig, oder? Es könnte aber auch einer "Bartholdy-Mendelssohn" heißen, dann wäre der Bedarf ungleich höher...
Hmm, wie ihr seht, plagt mich das etwas. Für einen oder zwei elegante Tipps wäre ich sehr dankbar. Die Tipps sollen als Diskussionsbasis dienen, und vor allem mein Verständnis bereichern. (Nichts geht über den guten alten AHA-Effekt
)
In diesem Sinne, besten Dank im voraus....
Gruß
Als Anfänger treibt man sich ja (zwangsläufig) gern und viel in diversen Foren herum. Und als Anfänger in (C) bin ich hier bei euch in der schönen tutorials-community gelandet... Natürlich habe ich mich mit der Hoffnung registriert, hier Antworten auf meine Fragen zu erlangen...

Ich befasse mich gerade mit der dynamischen Speicherverwaltung. Und dies im Zusammenhang mit einem kleinen Programm, welches in recht rudimentärer Art und Weise ein paar Mitarbeiter verwalten soll. (Eingabe, Ausgabe, Bearbeiten, Löschen, etc...)
Eine Bedingung ist diese, ich zitiere: "Für die Speicherung der Namen soll nur der unbedingt notwendige Speicherplatz verwendet werden."
Nun habe ich die die malloc-Anweisung so eingebaut, das ich einen Zeiger als Strukturvariable definiere. (In dieser Struktur wird auf eine weitere verwiesen, in welcher die pers. Daten des einzelnen Mitarbeiters stehen)
Anhand diesen Zeigers fordere ich über (malloc) Speicher für die Struktur an.
Diese Anforderung multiplizier ich mit der (Max_Anzahl) an Mitarbeiter.
Danach lädt er die Liste in die Struktur und es geht ganz normal weiter.
Doch das ist ja nicht unbedingt das, was gefordert ist, right? Die Speicheranforderung ist ja recht universell gehalten. Wie kann ich das jetzt nur auf den Namen bezogen realisieren?
Eine Liste mit den Mitarbeitern wird zu Beginn des Programmes geladen. Dann wird damit gearbeitet, und zum Programmende wird die Liste wieder in eine Datei geschrieben.
Hier mal die Strukturdefinitionen...
Code:
// Struktur der Inhalte / Daten für einen einzelnen Mitarbeiter (Typ)
struct mitarbeiter_daten
{
int persnr;
char nachname[30];
float stundenlohn;
float arbeitsstunden;
float gesamtlohn;
};
// Struktur für alle Mitarbeiter
// bezieht sich auf die Struktur der Inhalte
// Zusätzlich eine Variable für die Anzahl der Mitarbeiter
struct mitarbeiter_db
{
struct mitarbeiter_daten mitarbeiter[ANZ_MITARBEITER];
int anzahl;
};
Und hier meine Definition für die malloc-Anweisung
Code:
// MALLOC
// Fordert laut meinem Verständnis Speicher in der Größe der Struktur an
// Multipliziert mit der maximalen Anzahl an Mitarbeitern
struct mitarbeiter_db *speicher;
if ((speicher = malloc(ANZ_MITARBEITER * sizeof(struct mitarbeiter_db))) != 0 )
{
}
else
{
// Fehlerroutine
printf("%s\n", FEHLER_SPEICHER);
}
Wenn ich das richtig verstanden habe, dann muss ich doch die Größenangabe im char-Array für die Nachnamen ([30]) herausbekommen, oder?
Wenn einer z.B. Meier heißt, dann hat er ja bloß 5 Buchstaben, dann noch das '\0' und er wäre fertig, oder? Es könnte aber auch einer "Bartholdy-Mendelssohn" heißen, dann wäre der Bedarf ungleich höher...
Hmm, wie ihr seht, plagt mich das etwas. Für einen oder zwei elegante Tipps wäre ich sehr dankbar. Die Tipps sollen als Diskussionsbasis dienen, und vor allem mein Verständnis bereichern. (Nichts geht über den guten alten AHA-Effekt

In diesem Sinne, besten Dank im voraus....
Gruß