Frage von Dieter987, 51

Auswahl zwischen zwei Möglichkeiten in C?

Guten Tag,

ich würde gern eine Auswahl zwischen zwei Optionen in C erstellen. z.B. Ja Nein oder Tag Nacht Wenn die 1. oder die 2. Option gewählt wurde soll das Programm fortgesetzt werden. Wenn allerdings irgendetwas anderes gewählt wurde, soll solange die Auswahl Ja Nein erscheinen bis der Benutzer Ja oder Nein gewählt hat.

Ich hatte schon lange herumprobiert mit switch und do-while aber war nicht wirklich erfolgreich.

Danke im Voraus

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von sarahj, 22


   

#include <stdio.h>

#define MAX_LINE_LEN 100

int
frageJaNein(char *message) {
int jaNein = -1;

fprintf(stdout, message); fflush(stdout);

do {
char antwort[MAX_LINE_LEN];


if (fgets (antwort,
MAX_LINE_LEN, stdin) == NULL ) {
// EOF
exit(0);
}
switch (antwort[0]) {
case 'j':
jaNein = 1;
break;
case 'n':
jaNein = 0;
break;
}
} while (jaNein < 0);
return jaNein;
}

main() {
if (frageJaNein("Antwort bitte (j/n): ")) {
fprintf(stdout, "ja\n");
} else {
fprintf(stdout, "nein\n");
}
}

Alternative:

int
frageJaNein(char *message) {
fprintf(stdout, message); fflush(stdout);

for (;;) {
char antwort[MAX_LINE_LEN];


if (fgets (antwort,
MAX_LINE_LEN, stdin) == NULL ) {
// EOF
exit(0);
}
switch (antwort[0]) {
case 'j':
return 1;
break;
case 'n':
return 0;
break;
}
}
}

Alternative (check gesamte Eingabe - nicht nur 1.Buchstabe):

int
frageJaNein(char *message) {
fprintf(stdout, message); fflush(stdout);

for (;;) {
char antwort[MAX_LINE_LEN];


if (fgets (antwort,
MAX_LINE_LEN, stdin) == NULL ) {
// EOF
exit(0);
}
if (strncmp(antwort, "ja") == 0)
return 1;

if (strncmp(antwort, "nein") == 0)
return 0;

}
}

Kommentar von sarahj ,

oha Tippfehler: statt "strncmp" bitte "strcmp".

Kommentar von sarahj ,

Danke für's *-chen.

Antwort
von Suboptimierer, 27
do
{
  //...
  Eingabe(sJN);
  Eingabe(sTagNacht);
}while( ((sJN != "Ja") && (sJN != "Nein")) || ((sTagNacht != "Tag") && (sTagNacht != "Nacht")) )

Oder du machst es separat in zwei Schleifen hintereinander.

Antwort
von DerMikeZ, 25

While antwort != Ja || antwort != Nein {
  switch(antwort) {
case 1: Was du willst; break;
case 2: Was du willst; break;
default: printf("Bitte geben Sie Ja oder.
                              Nein ein\n"); break;
  }
}

Antwort
von 3v1lH4x0R, 17

Ist nicht falsch was die andern sagen aber nicht wirklich flexibel
[benötigt string.h]
Char antwort[30] = "\n";
While(!strcmp("\n",antwort)) {
Gets("%s",antwort);
}

Kommentar von Dieter987 ,

Mir ist dies unschlüssig, könnten sie es bitte kurz erläutern?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten