Hallo Leute, Ich habe ein Programm geschrieben, aber diese stürzt komischerweise beim aufrufen ab. Ich habe es heute in der Schule probiert, und dort hat es zuerst nicht funktioniert, dann habe ich einen neuen Ordner auf meinem Stick erstellt und es dort aufgerufen und dann ging es. Jetzt zuhause geht es wieder nicht. Ich benutze Codeblocks. Kurz zum Programm, es sollen mehrere Obejktnummern eingelesen werden und diese dann ausgegeben werden bzw ein gewünschtes gelöscht werden können. Hier der Code:
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | |
4 | struct haeuser |
5 | {
|
6 | int objektnummer; |
7 | char strasse[20]; |
8 | int hausnummer; |
9 | char haustyp; |
10 | float wohnflaeche; |
11 | int baujahr; |
12 | float preis; |
13 | struct haeuser *zg; |
14 | };
|
15 | |
16 | |
17 | void hausanhaengen(struct haeuser *head, int Objekt); |
18 | void hausloeschen(struct haeuser *head, int objektnr); |
19 | void Ausgabe(struct haeuser *head); |
20 | |
21 | void main() |
22 | {
|
23 | |
24 | struct haeuser *head; |
25 | head=(struct haeuser*)malloc(sizeof(struct haeuser)); |
26 | int Objekt=0,objektnr=0; |
27 | |
28 | |
29 | char buchstabe; |
30 | int flag=1; |
31 | |
32 | |
33 | while(flag==1) |
34 | {
|
35 | printf("Bitte geben Sie einen Buchstaben ein:\n"); |
36 | fflush(stdin); |
37 | scanf("%c",&buchstabe); |
38 | |
39 | switch(buchstabe) |
40 | {
|
41 | |
42 | case'e': |
43 | |
44 | hausanhaengen(head,Objekt++); |
45 | break; |
46 | |
47 | case'l': |
48 | printf("Bitte geben Sie die zu loeschende Objektnummer ein:\n"); |
49 | scanf("%i",&objektnr); |
50 | hausloeschen(head,objektnr); |
51 | break; |
52 | |
53 | case'a': |
54 | Ausgabe(head); |
55 | break; |
56 | |
57 | case 'b': |
58 | flag=0; |
59 | break; |
60 | }
|
61 | }
|
62 | |
63 | }
|
64 | |
65 | |
66 | void hausanhaengen(struct haeuser *head,int Obj) |
67 | {
|
68 | struct haeuser *n; |
69 | while((*head).zg!=NULL) |
70 | head=(*head).zg; |
71 | n=(struct haeuser*)malloc(sizeof(struct haeuser)); |
72 | |
73 | if(n!=NULL) |
74 | {
|
75 | (*n).zg=NULL; |
76 | (*n).objektnummer=Obj; |
77 | (*head).zg=n; |
78 | }
|
79 | else
|
80 | printf("Fehler bei der Speicherreservierung\n"); |
81 | }
|
82 | |
83 | void hausloeschen(struct haeuser *head,int objektnr) |
84 | {
|
85 | struct haeuser *suchhaus,*suchhausz; |
86 | suchhaus=head; |
87 | suchhausz=(*suchhaus).zg; |
88 | while((*suchhausz).objektnummer!=objektnr) |
89 | {
|
90 | suchhaus=suchhausz; |
91 | suchhausz=(*suchhaus).zg; |
92 | }
|
93 | (*suchhaus).zg=(*suchhausz).zg; |
94 | free(suchhausz); //Speicher freigeben |
95 | }
|
96 | |
97 | void Ausgabe(struct haeuser *head) |
98 | {
|
99 | while((*head).zg!=NULL) |
100 | {
|
101 | head=(*head).zg; |
102 | printf("Nummer: %i\n",(*head).objektnummer); |
103 | }
|
104 | printf("\n"); |
105 | |
106 | }
|
Danke für die Hilfe!