if abfragen von 2 Zeichen sorgt für Verwirrung.

OP #5760206
Lesenswert?

Hallo
Ich Möchte einen String mit if auf Zeichen untersuchen.
Soll heißen im String steht zb A0 oder B1 C2 bla bla
Jetzt habe ich versucht dies so auszulesen:

Si = A0;
----------------------------
if (Si == 'A0')
{
--mache was
}

if (Si == 'B1')
{
--mache was anderes
}
----------------------------

Das Wird auch kompiliert (arduino IDE) ABER Es scheint IMMER True zu 
sein.
So Das A0 und B1 Immer Ausgeführt werden Welche sich Aber Gegenseitig 
Aufheben.

Wo wäre Mein Denkfehler Zusuchen ?
Vielen Dank
Gast #5760224
Lesenswert?

DAVID -. schrieb:
> Wo wäre Mein Denkfehler Zusuchen ?
1. Strings werden mit doppelten Hochkommas eingeschlossen, nicht mit 
einfachen.
2. Strings werden mit strcpy(char *dest, char *src) zugewiesen.
3. Strings werden mit strcmp(char *str1, char *str2) verglichen.
4. Du verwendest Strings wo es anders einfacher geht.

> Vielen Dank
Bitte
Gast #5760253
Lesenswert?

Du kannst mit enum aussagekräftige Namen verwenden und trotzdem mit == 
vergeleichen. Vielleicht brauchst du die Strings gar nicht?
1
enum{A0, A1, A2} pin;
2
  
3
 pin =A0;
4
  
5
      switch(pin){
6
          case A0: puts("A0");
7
                   break;
8
          case A1: puts("A1");
9
                   break;
10
          case A2: puts("A3");
11
                   break;
12
          default: 
13
                   puts("Fehler");
14
     }
OP #5760282
Lesenswert?

Nur der vollständigkeitshalber:
Es geht nur um EINEN String welcher sich natürlich Ändert.
Dieser kommt vom seriellen Port (Tut aber nix zur Sache).
Und muss nur mit 2 Zeichen abgeglichen werden.
Hat auch Gar nix mit Irgendwelchen A. Pins zu Tuhen.

Die Zeichen einzeln Auszuwerten hat sich Als zu Fehlerbehaftet erwiesen.

Danke Euch mal Sehen ob Ich Mit strcmp oder strncmp Weiter Komme.
Persönliche Seite #5760926
Lesenswert?

Wenn die Arduino-Umgebung verwendet wird, kann natürlich die 
String-Klasse verwendet werden, und die wiederum hat den == -Operator 
entsprechend überladen.
1
String text;
2

3
text = "blabla";
4

5
if (text == "blabla")
6
{
7
  // etc.pp.
8
}

Der Code des Threadstarters muss also nur mit den korrekten 
Anführungzeichen geschrieben werden und funktioniert, sofern die 
Variable "Si" vom Typ String ist.

Ist "Si" allerdings ein char-Array, dann funktionieren die Vergleiche 
nicht.

https://www.arduino.cc/en/Tutorial/StringComparisonOperators

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren