überprüfen ob enter-taste gedrückt wurde



  • Hallo, hätte eine kleine frage:

    Wie kann man auf das drücken der Enter-Taste (nur die entertaste) von stdin reagieren?
    mit scanf gehts ja leider nicht....
    hab mir gedacht vielleicht mit fgetc() oder gar fgets()....

    könnte mir jemand ein beispiel geben ?
    wäre echt nett 🙂

    also so:

    if (nächstes "zeichen" ist entertaste)
    {
       /*do something*/
    }
    

    lg



  • Moin,

    das müsste gehen:

    #include <stdio.h>
    
    int main(void)
    {
    	for(;;)
    	{
    		if( getchar() == '\n' )
    			break;
    	};
    
    	return 0;
    };
    

    Jedoch bin ich mir nicht sicher ob das portabel ist.
    Unter Linux geht es auf jeden Fall.

    Gruß,
    Körper



  • so in borland in der schule schon verwendet, sollte gehn so. 👍



  • ansii schrieb:

    Hallo, hätte eine kleine frage:

    Wie kann man auf das drücken der Enter-Taste (nur die entertaste) von stdin reagieren?
    mit scanf gehts ja leider nicht....

    Hallo,
    wieso geht das nicht?
    Guckst du:

    char c = 0;
    	if((1 == scanf("%c",&c)) && (c == 10))
    		puts("ENTER");
    	else
    		puts("KEEP OFF");
    


  • konkret müsste ichs so hinkriegen:

    if(scanf("%2s", cmd) != 1){}
    		if ( cmd[0] == 13 ) 
    		{
    			/*do something*/
    		}
    		if ( cmd[0] == 'p' ) 
    		{
    			/*do something*/
    		}
    

    also checken ob entweder die entertaste wird gedrückt.. .oder 'p'
    das funktioniert aber leider nicht...

    kann mir bitte jemand weiterhelfen?



  • Was funktioniert nicht, die leeren if-Abfragen?



  • Big Brother schrieb:

    Was funktioniert nicht, die leeren if-Abfragen?

    😃

    getchar und scanf holen sich ein Zeichen aus dem Puffer, wenn man die Entertaste drückt.
    Wurde nichts eingegeben, finden die Funktionen nur das '\n' (ASCII 10).
    Deshalb habe ich in meinem Beispiel auch auf 10 abgefragt und
    darum funzt das mit deiner gutgemeinten 13 (Carriage Return) nicht.
    Könntest _getch oder _getche nehmen, die liefern dir ne 13.

    Gruß,
    B.B.


Log in to reply