Eingaben ohne Entertaste bestätigen [Hangman]
-
Hallo,
ich arbeite zur Zeit an einem Hangmanprojekt. Ich muss noch einfügen, dass wenn ich ein Zeichen zum Raten eingebe, ich nicht immer die Entertaste drücken muss. Ich krieg das auch mit getc() nicht hin. Kann mir da wer helfen?void holeInput() {
int i; int buchstabe_hit = 0; printf("\nDeine Vermutung: "); //eingesetzter_buchstabe[0]=getc(stdin); scanf(" %c", eingesetzter_buchstabe); printf("Verwendete Buchstaben: %c\n",eingesetzter_buchstabe[0]); //putc(eingesetzter_buchstabe[0],stdout); for(i=0; i < wortlaenge; i++) { if(tolower(eingesetzter_buchstabe[0]) == tolower(wort[i])) { geratene_buchstaben[i] = eingesetzter_buchstabe[0]; buchstabe_hit ++; }//if }//for if(buchstabe_hit > 0) { printf("Deine Vermutung war richtig.\n"); return; }//if else { versuche --; printf("Deine Vermutung war falsch.\n"); }//else
}//holeInput
-
Das geht in Standard-C nicht, sondern hängt vom Betriebssystem ab, das du benutzt. Dort gibt es dann spezielle Bibliotheken dafür.
Siehe z.B. https://docs.microsoft.com/en-us/cpp/c-runtime-library/console-and-port-i-o?redirectedfrom=MSDN&view=msvc-160, Funktion _getch.
Siehe auch hier für mehr Antworten: https://stackoverflow.com/questions/421860/capture-characters-from-standard-input-without-waiting-for-enter-to-be-pressed
-
Schreibe Bitte in eine Zeile vor Deinem Code
```
und in eine Zeile nach Deinem Code```
. Alternativ markiere Deinen Code und klicke auf das</>
in der Symbolleiste über dem Eingabefeld.
Du kannst Deine Beiträge auch im Nachhinein noch bearbeiten. Den Menüpunkt "Bearbeiten" findest Du in dem Drei-Punkte-Manü rechts unter Deinen Beiträgen.
@Srdjan-Simikic sagte in Eingaben ohne Entertaste bestätigen [Hangman]:
holeInput
Deutsch oder Englisch. Entscheide Dich.
@Srdjan-Simikic sagte in Eingaben ohne Entertaste bestätigen [Hangman]:
scanf(" %c", eingesetzter_buchstabe); printf("Verwendete Buchstaben: %c\n",eingesetzter_buchstabe[0]);
Woher kommt denn die Variable
eingesetzter_buchstabe
plötzlich? Irgendwas kann da auch typmäßig nicht stimmen bei%c
. (edit: Oder zumindest liegt der Verdacht nahe daß Du nicht bewusst tust was Du da tust.)@Srdjan-Simikic sagte in Eingaben ohne Entertaste bestätigen [Hangman]:
int i; // ... for(i=0; i < wortlaenge; i++) {
Deklariere Variablen so nah wie möglich dort wo sie auch verwendet werden:
for (int i = 0; // ...
Wenn sich Dein Compiler darüber aufregt dann mach ihm klar daß Du mindestens C99 willst. (
--std=C99
beiclang
undgcc
)