unsichtbare Eingabeaufforderung



  • 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.



  • _matze schrieb:

    Btw, ANSI-C, nicht Ansic... 😉

    Stimmt! Und vor allem ist die Funktion getch() nicht in ANSI-C bekannt.



  • 08mmarte schrieb:

    Hab nur mal irgendwo gelesen, dass es mit getch() oder so ähnlich geht...

    Es gibt kein getch in ANSI C! Das ist eine Betriebssystem/Compiler spezifische Sache.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten