unsichtbare Eingabeaufforderung
-
Hab mal irgendwo gelesen, dass man eine unsichtbare Eingabeaufforderung machen kann, wie geht das?
Soll heissen, man sieht nicht, was man eingibt..mfg 08mmarte
-
Das geht mit ANSI C nicht und hängt vom verwendeten Betriebssystem ab. Wenn du mir sagt für welches Betriebssystem du programmierst, kann ich dich in ein entsprechendes Unterforum verschieben.
-
Okey in Ansic C geht das nicht...
Gibt es eine ähnliche Variante im Ansic C...
Ich möchte nämlich C lernen...mfg 08mmarte
-
mann könnte versuchen ein backspace auf die ausgabe zu schicken ( ich glaub \b).
Es ist natürlich shell-abhängig was dann passiert.
Entweder das letzte zeichen auf der ausgabe wird gelöscht oder es erscheint nur ein eigenartiges symbol hinter dem text oder es wird ignoriert.
gleiches gilt für den Fall dass du die gesammte aktuelle zeile neu schreiben willst mit \r.Ne andere Ansi C konforme (also ohne OS abhängige Funktionen zu nutzen) sehe ich nicht.
-
Hab nur mal irgendwo gelesen, dass es mit getch() oder so ähnlich geht...
-
Ich habs wieder gefunden:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char Eingabe; printf("scanf() Eingabeaufforderung:\n"); scanf("%c",&Eingabe); getchar(); printf("Deine Eingabe wurde auf dem Bildschirm ausgegeben und \ndu musstest Enter druecken. Deine Eingabe war: %c\n\n",Eingabe); printf("getch() Eingabeaufforderung:\n"); Eingabe=getch(); printf("Deine Eingabe wurde nicht auf dem Bildschirm ausgegeben und \ndu musstest nicht Enter druecken. Deine Eingabe war: %c\n\n",Eingabe); system("PAUSE"); return 0; }
auf http://www.c-programmieren.com/C-Lernen.html
Hab es ausprobiert, es hat aber nicht funktioniert
-
08mmarte schrieb:
Hab es ausprobiert, es hat aber nicht funktioniert
Wie immer, die selbe alte Leier: "Funktioniert nicht ist keine ausreichende Fehlerbeschreibung". Fehlermeldung des Compilers?
-
1>c:\dokumente und einstellungen\mamar\eigene dateien\visual studio 2005\projects\unsichtbar\unsichtbar\unsichtbar.cpp(17) : error C3861: "getch": Bezeichner wurde nicht gefunden.
-
Ich glaube ich habe den Fehler gefunden
Eingabe=getch();
müsste eigentlich
Eingabe=getchar();
sein...
-
08mmarte schrieb:
1>c:\dokumente und einstellungen\mamar\eigene dateien\visual studio 2005\projects\unsichtbar\unsichtbar\unsichtbar.cpp(17) : error C3861: "getch": Bezeichner wurde nicht gefunden.
Da musst du in der Hilfe (z.B. MSDN) nachsehen, welchen Header du für diese Funktion einbinden musst!
Btw, ANSI-C, nicht Ansic...
-
scanf() Eingabeaufforderung: 1 Deine Eingabe wurde auf dem Bildschirm ausgegeben und du musstest Enter druecken. Deine Eingabe war: 1 getch() Eingabeaufforderung: 1 Deine Eingabe wurde nicht auf dem Bildschirm ausgegeben und du musstest nicht Enter druecken. Deine Eingabe war: 1 Drücken Sie eine beliebige Taste . . .
Das gibt es aus, in Zeile 6 - 8 ist der Fehler, Hier steht "Deine Eingabe wurde nicht auf dem Bildschirm ausgegeben und du musstest nicht Enter druecken." was nicht stimmt, denn ich musste Enter drücken...
-
Wenn du nicht Enter drücken willst, kannst du z.B. _kbhit() in Verbindung mit getch() benutzen. Kleines Beispiel:
int main() { printf("Eingabe: "); while(!_kbhit()); char c=getch(); printf("\b"); printf("\nEingegebenes Zeichen: %c",c); getchar(); }
Standarfkonformes ANSI-C ist das nicht, aber wen kümmert's... (nicht schlagen, bitte
)
-
Bevor es passiert, hier schon mal der Tipp: für das Beispiel conio.h einbinden!
-
Danke _matze hast mir mal wieder geholfen...
-
Kann man so auch Sätze oder einzelne Wörter einlesen??
-
#include "stdafx.h" #include "conio.h" int main() { while(!_kbhit()); char a=getch(); printf("\b"); while(!_kbhit()); char b=getch(); printf("\b"); while(!_kbhit()); char c=getch(); printf("\b"); while(!_kbhit()); char d=getch(); printf("\b"); while(!_kbhit()); char e=getch(); printf("\b"); printf("\nSie haben: [%c%c%c%c%c] eingegeben",a, b, c, d, e); getchar(); }
Funktioniert mit Wörtern...
Ist seh aufwändig muss sicher einfacher gehen, oder?
-
Soll das auf eine Passworteingabe hinauslaufen?
Mach lieber eine Endlosschleife, in der du solange einzelne Zeichen einliest (und die Anzeige mit '\b' löschst), bis ein bestimmtes Ende-Zeichen (z.B. ESC) eingegeben wurde. So beschränkst du dich nicht auf eine bestimmte Anzahl von Zeichen.
-
Nein, das läuft nicht auf ein Passwort hinaus...
Das mit der Schleife werde ich sofort ausprobieren...
-
Ein Beispiel:
int main() { char c; std::string s; printf("Eingabe: "); for(;;) { if(_kbhit()) { c=getch(); if(c==27 || c==13) { //Abbruch mit ESC oder RETURN break; }else { s+=c; } printf("\b"); } } printf("\nEingegebene Zeichenkette: %s",s.c_str()); getchar(); }
Wupps! Das ist ja das C-Forum, also nimm kein std::string!
-
08mmarte schrieb:
1>c:\dokumente und einstellungen\mamar\eigene dateien\visual studio 2005\projects\unsichtbar\unsichtbar\unsichtbar.cpp(17) : error C3861: "getch": Bezeichner wurde nicht gefunden.
Und C Code tut man in einer .c Datei rein und nich in .cpp. Du solltest C Code nicht mit einem C++ Compiler jagen.