Segmentation fault
-
Guten Tag. Ich wollte als absoluter C-Neuling einfach mal die switch-case Schleifen ausprobieren und habe ein ganz einfaches Programm geschrieben, wo eigentlich nichts schief laufen dürfte.
int main() { int zahl; printf("Zahl eingeben"); scanf ("%d", zahl); switch (zahl) { case 1: printf ("EINS"); break; case 2: printf ("ZWO"); break; case 3: printf ("DREI"); break; } return 0; }
Trotzdem steht in der Konsole immer "Segmentation fault".
Im Internet steht nur was es ist, aber nicht, wie man es fixt. Also: Was mache ich falsch?
-
scanf ist dein Problem - jetzt hast du was zu suchen
-
Tomete schrieb:
Also: Was mache ich falsch?
Du nutzt die Möglichkeiten Deines Compilers nicht, Dich vor Fehlern zu warnen.
Z.B. mit
gcc -Wall -pedantic ...
-
gcc: fatal error: no input files
Die Ausgabe erhalte ich wenn ich den genannten Befehl eingebe.
scanf ist dein Problem - jetzt hast du was zu suchen
Soll das heißen, wenn ich das über gets löse ist das Problem weg?
-
Tomete schrieb:
gcc: fatal error: no input files
Die Ausgabe erhalte ich wenn ich den genannten Befehl eingebe.
Du hast die 3 Punkte übersehen.
scanf ist dein Problem - jetzt hast du was zu suchen
Soll das heißen, wenn ich das über gets löse ist das Problem weg?
Nein. Und wenn Du auch nur an gets denkst, hast Du gleich noch ein weiteres Problem.
-
Tomete schrieb:
Soll das heißen, wenn ich das über gets löse ist das Problem weg?
Dann hast du zwei neue Probleme. gets sollte nie verwendet werden, weil es nicht auf Pufferüberläufe prüft.
Tomete schrieb:
Die Ausgabe erhalte ich wenn ich den genannten Befehl eingebe.
wenn du keine datei angibst, kann gcc auch keine kompilieren.
scanf ("%d", zahl); /* Du musst scanf eine Adresse übergeben, kein Wert: */ scanf ("%d", &zahl);
-
Ach, schande über mich, klar. Danke.