Hallo, ich möchte mit einem Arduino eine Char per IF Abfrage gleichzeitig ein paar Buchstaben abfragen, Nämlich diese: qwertzuiopü+asdfghjklöä#<yxcvbnm,.-1234567890ßQWERTZUIOPÜASDFGHJKLÖÄYXCV BNM;:_'*!"§$%&/()=? Wie schaffe ich es diese Buchstaben gleichzeitig abzufragen? Vielen Dank für die Hilfe
Dein name spricht bände... Jetzt aber mal im ernst, was willst du machen? Du weisst schon wie eine "If-Abfrage" aussieht? Beste grüsse Public
Ja, das weiß ich ich möchte aber nicht: if (Msg==A { abfragen, sondern so: if (Msg==A,B,C,D,E) { wie kann ich das machen?
Vielleicht so etwas?
1 | char a = 'x'; |
2 | char b[] = "qwertzuiopü+asdfghjklöä#<yxcvbnm,.-1234567890ßQWERTZUIOPÜASDFGHJKLÖÄYXCVBNM;:_'*!\"§$%&/()=?"; |
3 | |
4 | if (strstr(b,a)) { |
5 | printf("'%c' ist im Buchstabensalat enthalten\n",a); |
6 | }
|
Hacker schrieb: > Wie schaffe ich es diese Buchstaben gleichzeitig abzufragen? Wenn du wissen willst ob es einer dieser ist: http://www.cplusplus.com/reference/cstring/strchr/
Sorry, ich meinte strchr. Mit strstr müsste es heißen:
1 | char a[] = "x"; |
2 | ...
|
Wenn du prüfen willst ob es ein druckbares Zeichen ist könnte auch das hier helfen: http://www.cplusplus.com/reference/cctype/isprint/
Vielen dank für die antworten! leider kann ich die Codes mit meinem arduino nicht nutzen. gibt es einen Befehl für den arduino? Und nein ich baue KEINEN key sniffer der die eingaben auf Richtigkeit überprüft ;)
Hacker schrieb: > leider kann ich die Codes mit meinem arduino nicht nutzen. Weiso nicht? string.h bzw. ctype.h includiert?
:
Bearbeitet durch User
OK, das werde ich mal versuchen. Ich brauche eine schleife, die IMMER einen Buchstaben abgleicht, und wenn der Buchstabe der Zeichen entspricht, soll er den Buchstaben in einem anderen String speichern, Also so: Be i s p i e l ZU: Beispiel >Und nein ich baue KEINEN key sniffer der die eingaben auf >Richtigkeit überprüft ;) Das würde ich doch niee machen
Hehe, If ((char == a) || (char == b) || (char == c) || usw.) { Code } Wenn in char ein zeichen steht... aber bibliotheken einbinden die das schon können sollte eigentlich kein problem sein, mit anderen worten Mach was max sagt ;)
Hacker schrieb: > Ich brauche eine schleife, > die IMMER einen Buchstaben abgleicht, > und wenn der Buchstabe der Zeichen entspricht, > soll er den Buchstaben in einem anderen String speichern, Dann sollte die isgraph Funktion das richtie für dich sein http://www.cplusplus.com/reference/cctype/isgraph/
1 | while(*to_check) |
2 | {
|
3 | if(isgraph(*to_check)) |
4 | {
|
5 | *to_write++ = *to_check; |
6 | *to_write='\0'; |
7 | }
|
8 | to_check++; |
9 | }
|
oder sonst das isgraph durch das strchr ersetzen wenn ich alle graphischen Zeichen kopiert werden sollen. public schrieb: > If ((char == a) || (char == b) || (char == c) || usw.) Aber bitte nicht die Hochkommas vergessen.
1 | (char == 'a')... |
:
Bearbeitet durch User
Max H., ich finde deine Vorschläge gut, aber ich weiß nicht wie ich das mit dem string dann mache. könntest du mir einen kleinen Code erstellen mit der Funktion?
und das hier If ((x >= 'a') && (x <= 'z')) naja funktioniert bei ASCII, bei EBCDIC nicht (wirst du auch nicht haben)
>If ((x >= 'a') && (x <= 'z'))
Funktioniert auch A-Z na ja, wie kann ich dann die anderen zeichen
abfragen?
user schrieb: > naja funktioniert […] bei EBCDIC nicht Warum nicht? Laut Wikipedia liegen bei EDBDIC 500 A bis I zwischen 0xC1 und 0xC9. Es ist zwar mehr Aufwand als bei ASCII, aber immer noch weit weniger, als jedes Zeichen abzufragen.
H. Linux schrieb: > wie kann ich dann die anderen zeichen > abfragen?
1 | if(x >= '0' && x <= '9') |
2 | |
3 | if(strchr("<dieAnderenZeichen>", x)) |
4 | |
5 | //oder einzeln
|
6 | if( x == '#' || x == '?' || x == '$' || ... ) |
:
Bearbeitet durch User
Möglichkeit_1: Praktisch nicht wartbar if (( Zeichen == 33) || ((Zeichen >= 35) && (Zeichen <= 42)) || ((Zeichen >= 44) && (Zeichen <= 61)) || (Zeichen == 63) || ((Zeichen >= 65) && (Zeichen <= 90)) || (Zeichen == 95) || ((Zeichen >= 97) && (Zeichen <= 122))|| (Zeichen == 167)|| (Zeichen == 196)|| (Zeichen == 214)|| (Zeichen == 220)|| (Zeichen == 223)|| (Zeichen == 228)|| (Zeichen == 246)|| (Zeichen == 252) ) ... Möglichkeit_2: In Funktion int GuckMal ( char Zeichen ) { const char Liste [] = "qwertzuiopü+asdfghjklöä#<yxcvbnm,.-1234567890" + "ßQWERTZUIOPÜASDFGHJKLÖÄYXCVBNM;:_'*!"§$%&/()=?"; int Zaehler; for ( Zaehler = 0; Zaehler < 90; ++Zaehler ) { if ( Zeichen == Liste [ Zaehler ] ) return 1; return 0; }
Ich sehe grad, dass ich etwas sparsam mit den Klammern "}" umgegangen bin.
Hacker schrieb: >>Und nein ich baue KEINEN key sniffer der die eingaben auf >>Richtigkeit überprüft ;) > Das würde ich doch niee machen Bestimmt nicht. Du würdest es nicht nur nie machen, du würdest es offenbar auch nicht mal können. Hacker schrieb: > könntest du mir einen kleinen Code erstellen mit der Funktion? Da hat ein Scriptkiddie wohl noch nicht die richtigen Quellen gefunden ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.