Ich habe diese Schleife, aber wenn ich nach meinem Zeichen eingeben, es verarbeitet es und verarbeitet dann das '\ n' vor der Eingabe erneut aufgefordert. Bitte!!!! HilfeEntfernen Sie neue Zeile Zeichen aus der Konsole
int input;
while (true){
input = getchar();
fflush(NULL);
input = input - '0';
if(input != 'e' && input != '\n') {
rc = state_fun(input);
}
5[ENTER]
Prozesse 5 als Eingabe, dann 10 (die ASCII- '\ n') als Eingabe, dann wieder anfordert Eingabe. Es macht mich verrückt
fügen Sie einen Dummy getchar() am Ende der while-Schleife hinzu, um das '\ n' zu konsumieren – Pooya
Der portable Weg, stdin zu spülen ist 'int c; while ((c = getchar())! = '\ n' && c! = EOF); '. 'fflush (NULL)' löscht 'stdin' nicht, da die Standards sagen, dass' fflush (stdin); ''Undefined Behavior' ist. –
Sie haben nur "0" von "Eingabe" subtrahiert. Danach testest du den * resultierenden Wert * gegen 'e' oder' \ n', also wenn du ':' drückst, wird die Bedingung wahr –