getchar() != '\n';



  • hi hab ein kleines problem, aber komme dennoch nicht weiter!

    char test;
    while(1)
    {
      test=getchar();
      if(test=='\n')
        break;
      putchar(test);
    }
    

    er springt auch aus der schleife , jedoch immer mit dem kompletten output.
    ich hab quasi die zeichen 2x auf dem bildschirm BEI enter.

    Output:
    eingabe
    eingabe

    wie kann ich das verhindern? 😮



  • Das putchar rausnehmen?



  • _matze schrieb:

    Das putchar rausnehmen?

    habs jetzt abgeändert

    while(1)
    { 
       if(index==19)
       {
           gotoxy(0,23);
           cout << "ERROR nur 20 Zeichen erlaubt!!!"; 
           break;
       }   
       test=getchar();
       if(test=='\n')
         break;                               
       index++;
    }
    

    allerdings bleib ich irgendwie in dem getchar(); sprich erst wenn ich ENTER drücke kommt die meldund ERROR..



  • Wenn du eine gedrückte Taste direkt validieren willst, musst du dir mal _kbhit (conio.h) angucken.

    Sowas in der Art (nur schnell dahingeschludert 😉 ):

    char test;
    	int index=0;
    	while(1)
    	{
    		while(!_kbhit());
    		test=_getche();
    		if(test=='\n' || test=='\r') {
    			break;
    		}
    		if(index++>=19) {
    			std::cout << "ERROR nur 20 Zeichen erlaubt!!!";
    			break;
    		}
    	}
    


  • while(!_kbhit());
    

    ??? versteh ich net



  • rubooo schrieb:

    while(!_kbhit());
    

    ??? versteh ich net

    Das heißt "warte, solange keine Taste gedrückt wird" (sieh dir die Doku zu _kbhit auch mal an).



  • logisch danke. ok hat gut geklappt allerdings liest er momentan nur ein zeicen ein



  • rubooo schrieb:

    logisch danke. ok hat gut geklappt allerdings liest er momentan nur ein zeicen ein

    Hm, dann machst du noch irgendwas falsch. Zeig mal deinen Code.



  • habs anderst gemacht.

    index=0
    while(1)                                                
    {
        test=_getche();
        if(test=='\n' || test=='\r') 
              break;
        if(index++>=19) 
        {
              gotoxy(0,23);
              cout << "ERROR nur 20 Zeichen erlaubt!!!";
              break;
        } 
    
    }
    

    klappt super jetzt.
    vielen dank



  • wie speicherst du die eingabe? oder brauchst du die nicht?



  • Und immer dran denken: Für Sondertasten wie z.B. die Pfeiltasten, werden 2 'Tasten' gesendet. Erst die 0, dann die Zahl für die Taste


Log in to reply