absturz in switch-anweisung

Hi.

Da fehlen noch ein paar Funktionen.

Bevor du dich an die Fehlersuche machst, solltest du erstmal die ganzen Warnungen berichtigen:
Code:
stops.c:20:1: warning: return type defaults to 'int' [-Wreturn-type]
stops.c: In function 'Berechnung_aus_Datei_Gauss':
stops.c:84:5: warning: implicit declaration of function 'toupper' [-Wimplicit-function-declaration]
stops.c:30:11: warning: variable 'speicher' set but not used [-Wunused-but-set-variable]
stops.c: In function 'Eingabe_Geokoord':
stops.c:130:7: warning: implicit declaration of function 'Eingabe_Geo_Tastatur' [-Wimplicit-function-declaration]
stops.c:135:7: warning: implicit declaration of function 'Berechnung_aus_Datei_Geo' [-Wimplicit-function-declaration]
stops.c: At top level:
stops.c:150:1: warning: return type defaults to 'int' [-Wreturn-type]
stops.c: In function 'Eingabe_Geo_Tastatur':
stops.c:171:7: warning: implicit declaration of function 'Eingabe_Geo_hexa' [-Wimplicit-function-declaration]
stops.c:176:7: warning: implicit declaration of function 'Eingabe_Geo_dezi' [-Wimplicit-function-declaration]
stops.c: At top level:
stops.c:190:1: warning: return type defaults to 'int' [-Wreturn-type]
stops.c:207:1: warning: return type defaults to 'int' [-Wreturn-type]
stops.c: In function 'Eingabe_Geo_hexa':
stops.c:217:3: warning: label 'gehe_zu_5' defined but not used [-Wunused-label]
stops.c: At top level:
stops.c:288:1: warning: return type defaults to 'int' [-Wreturn-type]
stops.c: In function 'Eingabe_Gausskoord':
stops.c:361:7: warning: implicit declaration of function 'Eingabe_Gauss_Tastatur' [-Wimplicit-function-declaration]
stops.c: At top level:
stops.c:380:1: warning: return type defaults to 'int' [-Wreturn-type]
stops.c: In function 'Eingabe_Gauss_Tastatur':
stops.c:389:3: warning: format '%i' expects argument of type 'int *', but argument 2 has type 'long int *' [-Wformat]
stops.c: In function 'main':
stops.c:476:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Eingabe_Gauss_Tastatur':
stops.c:442:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Eingabe_Geo_dezi':
stops.c:343:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Eingabe_Geo_hexa':
stops.c:286:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Berechnung_aus_Datei_Geo':
stops.c:205:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Eingabe_Geo_Tastatur':
stops.c:188:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Ausgabe_Datei':
stops.c:23:1: warning: control reaches end of non-void function [-Wreturn-type]
stops.c: In function 'Berechnung_aus_Datei_Gauss':
stops.c:32:3: warning: 'zeilenanzahl' is used uninitialized in this function [-Wuninitialized]
stops.c: In function 'Berechnung_aus_Datei_Geo':
stops.c:196:3: warning: 'zeilenanzahl' is used uninitialized in this function [-Wuninitialized]
Gruß
 
Zuletzt bearbeitet:
Die Warnungen kommen wohl, weil die Berechnungen auf 2 anderen c dateien drauf sind, die ich hier nicht gepostet habe, weil die damit eigentlich nichts zu tun haben
 
Die Warnungen kommen wohl, weil die Berechnungen auf 2 anderen c dateien drauf sind, die ich hier nicht gepostet habe, weil die damit eigentlich nichts zu tun haben
Die Warnungen kommen vor allem deshalb weil du unsauber programmiert hast.

Es fehlen Rückgabetypen.

Du hast ctype.h nicht eingebunden.

Falsche Formatstrings verwendet usw.

Gut möglich, dass der Fehler weg ist wenn du alle Warnungen entfernst. So hat das keinen Sinn sich das anzuschauen.

Ansonsten, ein vollständiges, kompilierbares (Minimal) Programm bitte.

Gruß
 
ok sorry. bin keine programmierexpertin. programmier gerade mal seit 3 monaten und das nicht aus spaß...

dann werd ich die warnungen mal entfernen...
 
Wenn du das geschafft hast, wäre noch wichtig zu wissen was man genau in dem Programm eingeben muss, bis der Fehler kommt.

Am aller, aller besten du kopierst den Text aus der Konsole vollständig hier rein.

\edit: einen Fehler hab ich gefunden.

Deine Arrays sind zu klein. Du legst Arrays mit n Elementen an und greifst gleichzeitig aber auf den Index n zu. Das führt zu undefiniertem Verhalten (Absturz z.B.), da die gültigen Indizes nur von 0 bis (n - 1) gehen.

\edit2: Deine Fehlerbeschreibung war etwas unglücklich. Dein Programm stürzt ja überhaupt nicht ab. Es wartet nur auf eine Eingabe.
C:
scanf("%c\n", &var);
liest ein Zeichen und überspringt dann weiße Zeichen bis ein nicht-weißes Zeichen kommt

Nimm das \n raus.

\edit3: Soetwas wie
C:
while (!feof(...)) {
  while (fgets(...)) {
  }
}
ist doppelt gemoppelt und kann zu einer Endlosschleife führen. Es reicht doch einfach
C:
while (fgets(...)) {
}
Gruß
 
Zuletzt bearbeitet:
Zurück