Robert Bienert: (C) sichere Eingabe => unkonventionelle Methode

Beitrag lesen

Moin!

Hallo,

Kannst Du denn

char string[21];

scanf("%20s",&string);
/* oder */
scanf("%20c",&string);

string[20]='\0';


> >   
> > austricksen?  
>   
> Nein,aber ich dachte, ich hätte das Tastaturbufferproblem umgangen, was aber doch nicht der Fall war.  
> Es muss doch irgendwie gehen, den Tastaturbuffer zu deaktivieren?  
  
Du willst deine Zeichen eins zu eins direkt von der Tastatur lesen? – Da wirst du wohl auf andere Methoden zurückgreifen müssen, denn die Funktionen der C-Bibliothek bekommen ohne besondere Vorkehrungen die Eingabe von stdin erst dann, wenn du Enter/Return betätigt hast, da das Zeichen `'\n'`{:.language-c} gleichzeitig einen Flush des Eingabepuffers bewirkt.  
  
Falls du unter einem Unix(-kompatiblen) System arbeitest, empfehle ich dir für den gewünschten Zweck die readline-Bibliothek, unter Windows gibt es den Header io.h, der solche Funktionen wie readkey zur Verfügung stellen sollte.  
  
Viele Grüße,  
Robert