Segmentation fault (core dumped)
-
Nachdem ich den Beitrag-Erstellen-Link gefunden hab (*hust*) kann ich hier auch mein Problem Schildern.
Der Quelltext (Natürlich gekürzt):#include <stdio.h> #define DOUBLEEND "\n\n" #define ENDL "\n" int main() { char rechnerart; /* Rechnerarten * a: Rechtecke * b: Dreiecke * c: Kreis */ printf("Was für eine Art Rechner möchtest du rechnen?\n"); printf(" Eingabe Art der Rechnung\n"); printf("--------------------------------------\n"); printf(" a Rechtecke\n"); printf("Eine Eingabe von : (Einem Doppelpunkt) beendet das Programm.\n"); do { printf("Eingabe: "); scanf("%s", &rechnerart); printf(ENDL); switch(rechnerart) { case('a'): //... break; case(':'): break; default: printf("Unbekannte Eingabe!\n"); break; } printf(DOUBLEEND); } while (rechnerart != ':'); printf(ENDL); return 0; }
Wenn man nun das Programm abbricht (Mit dem : als Eingabe) funktioniert auch eigentlich alles - ausser dass als letzte Ausgabe "Segmentation fault (core dumped)" kommt (Hab ich überprüft in dem ich vor return einen Text hab ausgeben lassen).
Wie kommt diese Meldung zustande? Und wie kann ich ihn beheben? Beim Kompilieren gibt cpp weder Fehlermeldungen noch Warnungen zurück. Eine google-Suche nach der Meldung hat lediglich (für mich unverständliche) Fehlerquellen genannt, die ich bei mir nicht sehe... Will heissen: IMO hab ich weder "Pointer" noch Arrays. Es sei ein Hinweis auf einen Speicherfehler.PS: Ich habe gerade erst mit C angefangen und zur Lektüre n' Wikibook genommen. Allerdings weiss ich doch noch einiges aus den ersten (Erfolglosen) schritten mit C++ und n' paar Sachen halt aus PHP (Das kann ich wenigstens xD). will heissen: Grundverständnis von Strukturen hab ich.
-
Ändere
scanf("%s", &rechnerart);
in
scanf("%c", &rechnerart);
ab. Du willst nur ein einzelnes char einlesen und keinen string. Wenn du dann mal ein char* bzw. char[] einlesen willst, kannst du dir das & Zeichen vor dem namen sparen, da der Name des C-Strings wie ein Pointer auf das erste Element des C-Strings behandelt wird.
MfG
GPC
-
Ah ja.. Tatsächlich. Wenigstens das geht nun *g*
Danke. Und das mit dem Rest deines Beitrages werd' ich mir merken.