Terminplaner - Funktionsaufruf mit Strukturzeiger
|
|
Seite: 1 |
| Autor |
|
Glaokie |
Terminplaner - Funktionsaufruf mit Strukturzeiger - Beitrag verfasst:
21.09.2009, 14:28 Uhr |
|
Beginner
Anmeldedatum: 04.02.2008 8 Posts und 3 Themen. |
Ich versuche mich grade an C und habe mir dafür das Standartbeispiel Terminplaner rausgesucht.
Leider komme ich jetzt irgendwie nicht weiter und ich weiß wirklich nicht was falsch sein soll. Ich habe eine Funktion zum hinzufügen eines Termins. Diese Funktion reserviert Speicher für die Struktur und ruft eine Funktion zum eingeben aller daten (tag, zeit, bemerkung ...) auf. in dieser zweiten funktion greife ich irgendwie nicht richtig auf die strukturen in der struktur zu, weiß jedoch nicht wie ich das beheben kann.
Hier mal der Code (nur die relevanten Stellen):
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
#include <stdlib.h>
#include <stdio.h>
void input_termin();
void input_daten(struct termin *);
struct datum
{
int tag;
int monat;
int jahr;
};
struct zeit
{
int stunde;
int minute;
int sekunde;
};
struct termin
{
struct datum datum; (!)hier könnte was nicht stimmen
struct zeit zeit; (!)hier könnte was nicht stimmen
char bemerkung[150];
struct termin *next;
};
struct termin *first_ptr;
struct termin *termin_ptr;
struct termin *free_ptr;
[b]int main()
{
input_termin();
getchar();
return EXIT_SUCCESS;
}[/b]
//Funktion zum reservieren von Speicherplatz(!)
[i]void input_termin()
{
if(first_ptr == NULL)
{
first_ptr = (struct termin *) malloc(sizeof(struct termin));
if(first_ptr == NULL)
{ printf("Nicht genug Speicher vorhanden!n");
exit(0); }
//einlesen
input_daten(first_ptr);
}
else
{
if(first_ptr->next == NULL)
{ first_ptr->next = (struct termin *) malloc(sizeof(struct termin));
if(first_ptr->next == NULL)
{ printf("Nicht genug Speicher vorhanden!n");
exit(0); }
else
{termin_ptr = first_ptr->next;
//einlesen
input_daten(termin_ptr); }
}
else
{ termin_ptr->next = (struct termin *) malloc(sizeof(struct termin));
if(termin_ptr->next == NULL)
{ printf("Nicht genug Speicherplatz!n");
exit(0); }
else
{termin_ptr = termin_ptr->next;
//einlesen
input_daten(termin_ptr); }
}
}
printf("Termin wurde erfolgreich eingegeben!n");
}[/i]
//Funktion zum Eingeben der Daten (!) gekürzt auf 2 Beispiele, da alle anderen entsprechend gleich sind
[i]void input_daten(struct termin * ptr)
{
printf("Bitte Datum (Tag) eingeben: ");
scanf("%2d", ptr->termin.datum.tag); (!)invalid use of 'struct termin'
fflush(stdin);
printf("Bitte Zeit (Stunde) eingeben: ");
scanf("%2d", ptr->termin.zeit.stunde); (!)invalid use of 'struct termin'
fflush(stdin);
printf("Hier kx94nnen Sie noch eine Bemerkung eintragen: "); (!)funktioniert
fgets(ptr->bemerkung,148,stdin);
}[/i]
|
|
Hoffe das es übersichtlich genug ist.
Danke schonmal
edit: hmm die textformatierungen [b] und [i] gehen irgendwie nicht genauso wie die smilies?
2 x geändert, zuletzt am 21.09.2009 von Glaokie
|
| |
|
Nach Oben  |
|
| Information |
| Wo bin ich? |
|
Programming Community » Sprachen » C/ C++/ C# » Terminplaner - Funktionsaufruf mit Strukturzeiger |
| Rechte |
|
Du darfst:
Beiträge lesen,
Themen eröffnen,
auf Beiträge antworten und hier
keine Umfragen erstellen |
| Statistik |
|
Seit dem 31.07.2002 (3478 Tage) wurden 7013 Beiträge in 1977 Themen verfasst. |
|
Wir haben 1278 User und begrüßen unser neustes Mitglied:
g.schief
|
Rekord: 8 registrierte waren gleichzeitig hier (27.07.2006, 14:54 Uhr). Im Moment: 0 registrierte Benutzer und 1 Gast online!
|
|