character einlesen
-
Guten Abend,
ich hab nen kleines Problemchen.
Hier erstmal der COde zur verdeutlichung.
#define SCP "\033[s" #define RCP "\033[u" printf(SCP); do { printf(RCP"Fehler: "); printf(RCP"Fehler: "); bBoo = SafeCharEin("123",&cFehler); }while (bBoo == false); switch (cFehler) { case '1': iAPt -= 1; break; case '2': iAPt -= 1; break; case '3': iAPt -= 15; break; default: break; }
bool SafeCharEin (char szVar[], char *cWahl) { int iLae; bool bRet = false; iLae = strlen(szVar); *cWahl = toupper(getche()); getchar(); for (int i=0;i<iLae;i++) if ( *cWahl == szVar[i]) bRet = true; return bRet; }
Nun zu den Problemen. Was speichert getchar() ab wenn ich einfach nur Enter drücke und kann ich das in den oberen String zur Überprüfung mit eingeben?
Die Sichere Eingabe soll ja weitermachen wenn 1,2,3 oder Enter gedrückt wurde. Aber ich bekomme das net hin.
falls jemand nen anderen Ansatz zu ner Sciheren Eingabe hat solls sagen, ich hänge net unebdingt an dieser Variante
Habe auch irgendwo im netz etwas von getche() gelesen, da würde mich interessieren ob es da eine entsprechende funktion für Unix gibt, da ich auf Unix arbeite dieser Befehl aber wohl nur unter Windows mit der header conio.h zu finden ist.
ich danke im vorraus.
mfg Reficul
-
Moin,
Reficul schrieb:
Was speichert getchar() ab wenn ich einfach nur Enter drücke und kann ich das in den oberen String zur Überprüfung mit eingeben?
Ein '\n', das auch Teil einer Zeichenkette sein kann.
Reficul schrieb:
falls jemand nen anderen Ansatz zu ner Sciheren Eingabe hat solls sagen, ich hänge net unebdingt an dieser Variante
Check this out, brother:
void cb() // clear buffer { int c; while ( ( c = getchar() != '\n' ) && c != EOF ) {}; } char input() { char c; do if ( '\n' != ( c = getchar() )) cb(); while ( !(c >= '1' && c <= '3' || c == '\n') ); return c; } int main() { char c; c = input(); return 0; }
Reficul schrieb:
Habe auch irgendwo im netz etwas von getche() gelesen, da würde mich interessieren ob es da eine entsprechende funktion für Unix gibt, da ich auf Unix arbeite dieser Befehl aber wohl nur unter Windows mit der header conio.h zu finden ist.
ich danke im v******.
mfg ReficulAlternativen fidest du mit Google.
Gruß,
B.B.