Switch Anweisung

Neue Frage »

Auf diesen Beitrag antworten »
Matze84 Switch Anweisung

Ich habe folgendes Programm geschrieben um einfach zu üben.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
 #include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int i;
bool fehler=false, wiederholung=false;
char a;
do
{
do
{
puts("Geben Sie eine Zahl zwischen 1 und 30 ein";);
scanf("%d",&i);
if(i<1||i>30)
{
puts("Diese Zahl ist ungültig!";);
fehler=true;
}
else
{
fehler=false;
}
}
while(fehler);

while(i>0)
{
putchar('a');
i--;
}
puts("Das war lustig.nnNicht wahr?";);
puts("Willst du das nochmal wiederholen? (j/n)";);
scanf("%c",a);
switch(a)
{
case'j' : wiederholung=true;
break;
case'n' : wiederholung=false;
break;
default : puts("Egal was du eingegeben hast, es passt mir nicht!nIch werde mich jetzt selbst beenden. Ciao!n";);
}
}
while(wiederholung);
return 0;
}


Es soll so oft "peep" machen wie der User eingegeben hat (zwischen 1 und 30 mal).
Wenn die eingegegebene Zahl nicht zwischen 1 und 30 liegt soll er einen Fehler melden und nochmal bitten die Zahl einzugeben.
Wenn das "Peep" "Peep" fertig ist soll der User gefragt werden, ob er das wiederholen möchte.
Ich habe versucht das mit switch zu machen, weil ich genau das üben wollte. (es würde sicher auf mit IF gehen)

Nun zu der Frage:
Wenn ich das ganze Schritt für Schritt debugge, dann springt er zwar in die switch Anweisung, aber immer zu "default" und das will ich ja nicht.

Was habe ich bei der switch Anweisung falsch gemacht?
Lg matze
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

a ist undefiniert und es wundert mich, dass das Programm nicht abstürzt.

In Zeile 34 musst du die Adresse von a übergeben und nicht a.

Also so:
code:
1:
2:
3:
scanf("%c",&a);


VG,

Karlito
Auf diesen Beitrag antworten »
Matze84

Ja das Programm hatte sich auch irgendwie aufgehängt... Also es kam jedenfalls ein Fehler.....
Aber selbst mit
code:
1:
2:
3:
scanf("%c",&a);

springt er in den defaultZweig.
Ich kann nichtmal mein "a" (also meine antwort) eingeben.
Auf diesen Beitrag antworten »
HueHang

code:
1:
scanf(" %c",&a);

also mit einem Leerzeichen vor "%c", dann funktioniert es.
 
Auf diesen Beitrag antworten »
Matze84

Zitat:
Original von HueHang
code:
1:
scanf(" %c",&a);

also mit einem Leerzeichen vor "%c", dann funktioniert es.


DANKE
Aber kannst du (oder jmd anders) mir evtl auch sagen warum ich da plötzlich ein "Leerzeichen" machen muss?
Weil erklären kann ICH mir das nicht.
unglücklich

Lg Matze
Auf diesen Beitrag antworten »
HueHang

Hier ist eine kleine Erklärung:
http://www.linuxforums.org/forum/program...html#post355499
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »