KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Mein Währungsrechner stürzt immer ab!
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute!

Ich hab folgendes Problem:
Spoiler: (anzeigen)
Wenn ich dieses Programm ausführen und die Wahl treffen will, stürzt es immer ab!

Kann mir jemand helfen?
Wieso
scanf("%i, &auswahl");

Du willst doch einen int - wert einlesen , oder ?
dann mach es so:

scanf("%d", & auswahl);
Und wenn ich schon dabei bin;
Allgemein:

scanf("%d ,& Zahl");
Währe falsch

Richtig ist es so:

scanf("%d", & Zahl);
Da hab ich noch ein Paar Fehler entdeckt, die damit zutun haben
1.: keine doppelposts, es gibt einen edit button und
2.: was meinst du warum er wohl %i nimmt? weil er einen integer einlesen will. deshalb heisst es ja %i, %d ist meines wissens für double, genau wie %f für float ist, %c für characters und so weiter.

mach auch kaum sinn %d für integer -.-

man kann nur deshalb auch %d nehemn, weil double genauer sind als integer
Och , Entschuldigung dass ich helfen wollte -.-
Da wird man ja gleich schön begrüst.

Also für mich ist %d und %i das selbe. So habe ich es auch gelernt ( aus einem sehr guten c - programming Buch)
Zudem benutze ich grundlegend %d für int,du etwa nicht ?
doch, ich auch, aber du hast ja behauptet %i sei falsch, was es nicht ist. es wird wohl wie du gesagt hast an den falsch gesetzten anführungszeichen liegen
Ja , eig hab ich das nie behauptet , eher nur dumm geschrieben ^^
Ich finde persönlich %d eleganter , um einen Int wert einzulesen.
Naja , dann währe dieses Thema Ja geklärt Wink
Jo ganz einfach Leut:

So da ist einiges Falsch erstes machst du das scanf falsch es muss so sein scanf("%d", &auswahl);
und nicht scanf("%i, auswahl");

So das & zeichen ist sehr wichtig sonst geht gar nicht Wink
Und außerdem würde ich das nicht mit case machen sondern mit if also:
if(auswahl == 1)
{
...code...
}
if(auswahl == 2)
{
...code...
}
else
{
...code...
}

und dann fehlt dir noch die Headerdatei stdlib.h Wink

also oben noch

Code:
#include <stdlib.h>

sonst kann man mit der Funktion system("PAUSE"); nicht viel anfangen Wink

Kompletter Code (anzeigen)
PS: Bist du durch mich auf die Idee gekommen ?

BTW: Neutro man kann %d für int nehmen wird sogar in Buch C von A bis Z so gelehrt Wink

PS²: Du könntest die Tasten auch mit getch(); einlesen also ohne scanf dazu brauch man nur den Tastatur Code Wink
ja, ich weiss dass es auch mit %d geht, mache ich ja auch, nur %i ist nicht falsch ^^

ach ja stehn, der switch ist wesehntlich eleganter als die if bedingungen, wiso würdest du nicht den switch benutzen? ich zumindest würde da auch einen switch benutzen.
Naja jeder wie er will Wink

Ich bin eher der If Freak Wink

aber wie gesagt mit getch(); wäre es um einiges besser musst halt bloß wissen wie man es anwendet Wink

Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
int x;

x = getch();

if(x == tastaturcode)
{
.....code....
}

sytem("PAUSE");
return 0;
}


Ganz easy Wink

Definitiv Switch
Deine Art ist sehr unelegant und viel länger.
In einem längeren Programm würde das zudem unübersichtlich werden.

Ps: Das Problem war schon lange gelöst ^^
Wie gesagt bin der If Freak Wink

Und wisst ihr eigentlich was ich mit getch(); mein nicht das ich mir umsonst die mühe mach xD
Das ist viel besser im Programm da man nur die Taste drücken muss nicht eingeben und enter Wink
Bei manchen Programmen ist das gar nicht gut, da man seine Eingabe nicht bestätigen kann und es sofort ausgeführt wird.
Nehmen wir an der Anwender vertippt sich - das könnte fatale Folgen haben.
Mit scanf Hingegen hat der Anwender die Chance , sich zu korrigieren
Oh ja bei der Auswahl zwischen 1 und 2 wird das Extreme Folgen haben Wink
Da hast du recht bei anderen Programmen aber hier kann er bei der Auswahl zwischen ein und 2 das ruhig machen.

Hab mal ein Beispiel gemacht welches Zeigt wofür getch(); gut ist Wink

http://www.multiupload.com/6PG42EN909
xDDDD
Du weisst , was ich mein Big Grin
Danke Leute!
Nun weiss ich auch warum meine Programmme immer abgestürzt sind - wegen scanf.

Gut jetzt weiss ich wie mans macht...

@stehn

Ja, ich wollte irgendetwas machen und da fiel mir dein Währungsrechner einBig Grin
Referenz-URLs