Ja/Nein abfrage bauen
-
Hallo
bin absoluter C NOOB und brauch mal eure Hilfe.
Ich schreib grade ein kleines Programm für die FH und komme nicht weiter.
Mein Problem ist, wenn das Prog einmal durchgelaufen ist soll eine Abfrage an den Benutzer kommen, ob er das Prog von neuem beginnen will. So weit so gut..
Nur hätte ich gerne das man nur j oder n eingeben kann, bei anderen Eingaben soll ein Fehler erscheinen und die Eingabe soll wiederholt werden.
Danke für eure Hilfe.
-
und wo ist jetzt da das problem?
Was hast du denn bis jetzt?
-
So ich habe bis jetzt
printf("\n\nWollen Sie noch eine Ausgabe haben? (j/n):");
res=scanf("%s",&abfrage);
fflush(stdin);}while(abfrage!='n');
so das Problem ist halt das er bei jeder Eingabe außer bei einem n weiter macht, ich möchte aber das man nur ein j oder n eingeben kann und sonst halt ne fehlermeldung kommt das die Eingabe falsch war.
-
So bin nun schon ein wenig weiter:
printf("\n\nWollen Sie noch eine Ausgabe haben? (j/n):");
abfrage=getchar();
fflush(stdin);while(106||abfrage>110||abfrage==107||abfrage==108||abfrage==109)
{
printf("Ihre Eingabe war falsch, bitte nochmal:\n");
abfrage=getchar();
fflush(stdin);
}
}while(abfrage==106);printf("Danke fuer die Benutzung unseres Programmes\n");
_sleep(3000);so gehts zwar ist aber nich schön, gibs ne andere Möglichkeit??
-
Erstens: Anstelle der Zahlenwerte solltest du lieber mit den entsprechenden char-Konstanten arbeiten - das erleichtert das Programm-verständnis.
Zweitens: fflush(stdin) ist zwar sehr beliebt bei Anfängern (und taucht auch regelmäßig in Tutorials aus), aber technisch gesehen undefiniert.
Und drittens: diese Code-Duplikation kannst du mit einer do-while-Schleife vermeiden:
do { ... do { while(getchar()!='\n');//das ist besser als fflush(stdin); abfrage=toupper(getchar()); if(abfrage!='N' && abfrage!='J') printf("Falsche Eingabe\n") } while(abfrage=='N'||abfrage=='J'); } while(abfrage!='N');
(durch das toupper() dort oben akzeptiert das Programm sowohl große als auch kleine Buchstaben)
-
Jo danke werds dann mal versuchen