getc(stdin) gibt zwei Zeichen. Gibt es einen besseren Weg, dies zu behandeln?
Ich bin derzeit mit getc()
in einer Schleife zum empfangen von Eingabe von einem Benutzer:
char x;
while (x != 'q')
{
printf("(c)ontinue or (q)uit?");
x = getc(stdin);
}
Wenn der Benutzer c
die Schleife ausführt, vermutlich unter ein zusätzliches Zeichen (terminator oder vielleicht ein Zeilenumbruch, ich bin zu raten?) als input das erste mal um.
Kann ich dies verhindern, indem Sie so etwas wie:
char toss;
char x;
while (x != 'q')
{
printf("(c)ontinue or (q)uit?");
x = getc(stdin);
toss = getc(stdin);
}
Aber das scheint mir nur ein fauler newbie Umgang mit ihm. Gibt es eine bessere Möglichkeit, dies zu tun mit getc
oder sollte ich es als einen string, und mit dem ersten Charakter der Reihe? Gibt es eine andere, noch bessere Möglichkeit, dass ich noch nicht einmal in Betracht gezogen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau.
Könnten Sie einfach ignorieren Räume:
Beachten Sie auch, dass
getc()
gibt einint
, nichtchar
. Dies ist wichtig, wenn Sie wollen, um zu erkennenEOF
was sollten Sie auch prüfen, um eine Endlosschleife zu vermeiden (beispielsweise wenn der Benutzer die Tastenkombination Strg-D auf unix-Systemen oder Ctrl-Z auf windows). Verwendenisspace()
Sie brauchen, um ctype.h.