if abfragen von 2 Zeichen sorgt für Verwirrung.

OP #5760206
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
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
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
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.
Gast
Wird mal wieder Zeit für ein gutes C Buch.
Der Arduino ist von der Hardware einfach. Aber darauf läuft immer noch 
C++. Und das ist seit den 80er gleich kompliziert geblieben.
Persönliche Seite
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.