1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Information ausblenden

Eingabe von Bustaben verhindern (C/C++)

Dieses Thema im Forum "Programmieren" wurde erstellt von FallenOne, 11. Januar 2005.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. FallenOne

    FallenOne Byte

    Hallo,
    kann mir jemand sagen wie man in C/C++ die Eingabe von Bustaben bzw. anderen Zeichen als Ziffern 0-9 verhindern kann?

    MfG
    Fallen
     
  2. ich denke, dass du es mit eier do-while-schleife machen könntest das wäre mir die bekannteste und beste lösung. ich habe versucht es zu erklären ich glaube man würde es aber nicht verstehen, also guck lieber mal bei google unter do-while-schleifen von c/c++ nach.

    mfg
    tobias
     
  3. .Erzengel*

    .Erzengel* Byte

    Hi,

    Ich würde da eher do-case nehemen.
    Kannst ja auch alles ausser die 9 Buchsteban auschalten, ist aber um einiges komplizierter.
     
  4. wenn ich es richtig verstanden habe möchtest du, das nur bestimmte zeichen reinkommen und bei einer fehleingabe noch einmal eingegeben werden muss. oder nicht ?

    das auslesen von mehr als zwei zeichen sollte auf jeden fall über eine switch-case abfrage laufen, da es mit if und els zu aufwändig wäre.

    bitte bedenke bei zeichen noch mit toupper(); bzw. tolower(); die eingabe auf einen level zu bringen, da du ansonsten evtl. falsche ausgeben bzw. gar nichts ausgegeben bekommen solltest.

    gruß
    tobias
     
  5. Michi0815

    Michi0815 Guest

    könnte auch so gehen (sorry, wenn fehler drinnen sein sollten; habe grad keinen compiler zur hand)

    Code:
    #include <conio.h>
    #include <string>
    #define LineFeed #10
    
    boolean TestKey(char c) {
      char erlaubt[] = "0123456789"; // die erlaubten zeichen
      int max_erlaubt = 10; // anzahl der erlaubetn zeichen
      boolean ergebnis = false;
      for (int lv=1; lv<=max_erlaubt; lv++) {
        ergebnis = ((erlaubt[lv] == c)||ergebnis) ;
      }
      return ergebnis
    }
    main() {
      char key;
      string Eingabe = "";
    
      while((key = getch ()) != LineFeed) {
        if (TestKey(key)) {
          Eingabe+=key; //keine ahnung ob das geht???
        }
      }
    
       // programm tut etwas mit "Eingabe"
    }
    
     
  6. sry ich blicke nicht wirklich durch deinen code ich hätte, oder mache es so:

    #include <stdio.h>
    #include <conio.h>

    void main()
    {char taste;
    do
    {
    taste = getch();
    // hier kommt dann dein code rein !!!
    }
    while(taste != '1' && taste != '2' && taste != '3') // etc.
    }
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen