Eingabe überprüfen (nach jedem zeichen)



  • Hallo zusammen,

    benötige Hilfe an dieser Aufgabe: ich soll die Eingabe auf bestimmte Zeichen prüfen.

    Soweit so gut. hab mir gedacht ich mache das mit _getch. Nur das Problem ist jetzt die Entertaste auszulesen, welche die Eingabe beenden soll.

    Kann es sein dass _getch nach jedem Zeichen selbst ein Enter setzt ?
    (Mein Problem ist es die Schleife mit einem Enter zu beenden)

    Oder sollte ich etwas anderes als _getch verwenden ?

    int main(void){
    
       char caInput[40];
       int i = 0; 
    
    	for(i = 0; i < 40; i++)
       { 
          caInput[i] = _getch();
          fflush(stdin);
          _gotoxy(i,0);
          printf("%c",caInput[i]);
    
          if(caInput[i] = '\n')
             i = 40;
    
       }
    
       printf("enter pressed");
    
    	_getch();
    	return 0;
    }
    

    Vielen dank für eure Hlfe 🙂



  • Es liegt schon an if(caInput[i] = '\n'). Das ist eine Zuweisung. Du willst auf Gleichheit prüfen mit ==.

    Und _getch(); fflush(stdin); _gotoxy(i,0); sind alle am Standard vorbei. Du solltest etwas anderes nehmen 🙂



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) 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.



  • char eingabe[100];
    fgets( eingabe,100,stdin );
    if( strchr(eingabe,'\n') ) *strchr(eingabe,'\n')=0; else while( getchar()!='\n' );
    /* hier stehen jetzt in eingabe max. 99 Zeichen ohne '\n', die du weiterverarbeiten kannst */
    


  • DirkB schrieb:

    Und _getch(); fflush(stdin); _gotoxy(i,0); sind alle am Standard vorbei. Du solltest etwas anderes nehmen 🙂

    Was bietet der Standard denn, um einen einzelnen Tastendruck ohne abschließendes Enter zu verarbeiten? Soweit ich weiß, gibt es da nichts, oder? In dem Fall muss man conio.h, die WinAPI oder sonstwas bemühen.

    EDIT: Um die Schleife vorzeitig zu verlassen, musst du nicht i auf 40 setzen. Verwende stattdessen break!



  • ja schon aber ich will ja nach jedem eingegeben Zeichen schauen ob dies "zugelassen" ist.
    oder versteh ich den code falsch ?



  • Benötige hilfe schrieb:

    ja schon aber ich will ja nach jedem eingegeben Zeichen schauen ob dies "zugelassen" ist.
    oder versteh ich den code falsch ?

    Für ein schnelles Erfolgserlebnis: Ändere die Prüfung von '\n' auf '\r' (denke an das doppelte Gleichheitszeichen!).



  • komisch das hatte ich versucht xD (mit ==)
    naja jetzt funktioniert es 🙂

    Herzlichen dank 🙂


Anmelden zum Antworten