Dynamisches Array mit getche()
-
PAD schrieb:
Danach setzt du den Buffer auf leer.
Einfach buffer=0; oder wie geht das?
-
wenn dein Buffer
char buffer[512];
dann setzt du diesen Buffer auf leer mit
buffer[0]=0x00;
Auf leer setzen heisst, du nträgst die Stringende kennung \0 in das erste element des Buffers ein
-
Noch was: bei meinem Code prüfe ich in der While-Schleife noch zusatzlich auf Escape eingabe. Damit man die Engabe jederzeit verlassen kann.
while((c!=13) && (c!=27)) //13 ist <Return> 27 ist <ESC> { ..... }
Bei gets() geht das nicht. Man kann die Eingabe nur durch return verlassen. Dann wird das aber abgespeichert, und das soll es nicht, wenn ich abbrechen will.
-
Das ist ein Nachteil von gets.
Lösungsansatz:
Wenn im einen eingegebenen String ESC vorkommt so wird abgebrochen bevor umkopiert wird. Das hat zwar den Nachteil das man zumindest esc cr eingeben muß. Aber es würde funktionieren.
-
Was meinst du mit
PAD schrieb:
Lösungsansatz:
das man esc cr eingeben muss.was ist esc cr? Wie gibt man das ein? wieso "cr"?
-
esc ist dein ESC
cr ist dein return als Abkürzung für carriage return//13 ist <Return> 27 ist <ESC>
-
Ja, stimmt. Bei mir wäre das aber eine Null-Eingabe, und wenn das passiert fragt er nochmal nach dem String. Geht bei mir also nicht.
-
Ich versuche es jetzt mit getch() und putchar().
-
wieso ist ESC return eine Nulleingabe, es müsste ein String mit einem Zeichen sein nämlich ESC
-
getch() und getche() verarbeiten Sondertasten wie zB ESC etwas anders:
ESC besteht dann aus 2 Zeichen. Das Erste ist ein Steuerzeichen, das anzeigt, dass eine Sondertaste gedrückt wurde. Das Zweite ist dann der Code für die ESC-Taste.
Welches Zeichen das 'Steuerzeichen' ist, hängt vom Compiler ab (irgendwo im Konsolen-Forum sollte etwas darüber zu finden sein)
uU ist bei dir dieses Steuerzeichen 0?