www.mikrocontroller.net

Forum: Compiler & IDEs Problem mit Char-Array in Struct


Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein kleines Problem mit einem CharArray innerhalb eines Struct.

Und zwar würde ich gerne das Array mit einem festen "String" 
vergleichen.
Mit der folgenden Methode funktioniert es wie gewünscht:
if(QueueItem.ucValue[2] == 'X' &&
   QueueItem.ucValue[3] == 'X' &&
   QueueItem.ucValue[4] == 'X' &&
   QueueItem.ucValue[5] == '\0') {...}

Will ich es aber über strcmp machen klappt es nicht.
if(strcmp((QueueItem.ucValue+2), "YYY")) {...}

Wo ist mein Denkfehler?
QueueItem.ucValue sollte doch ein Zeiger auf das 0. Element sein. 
QueueItem.ucValue+2 zeigt damit folglich auf das 2. Element ab dem ich 
den String überprüfen möchte. Oder stimmt das so nicht?

Gruß
Franz

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Franz schrieb:

>
> if(QueueItem.ucValue[2] == 'X' &&
>    QueueItem.ucValue[3] == 'X' &&
>    QueueItem.ucValue[4] == 'X' &&
>    QueueItem.ucValue[5] == '\0') {...}
>
> Will ich es aber über strcmp machen klappt es nicht.

Was klappt nicht? Ein Computer benoetigt praezise Anweisungen, genauso 
praezise sollte man bei der Problemformulierung sein.

>
if(strcmp((QueueItem.ucValue+2), "YYY")) {...}
>
> Wo ist mein Denkfehler?

Anhand der knappen Informationen geraten: Du hast uebersehen, dass 
strcmp() 0 zurueck gibt, wenn beide Strings gleich sind.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Franz schrieb:

>
if(strcmp((QueueItem.ucValue+2), "YYY")) {...}
>
> Wo ist mein Denkfehler?

>
if (!strcmp (QueueItem.ucValue+2, "XXX")) {...}

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Stegemann schrieb:
> Was klappt nicht? Ein Computer benoetigt praezise Anweisungen, genauso
> praezise sollte man bei der Problemformulierung sein.

Klappt nicht bei if => nicht wahr obwohl es wahr sein "sollte" :)


>>if(strcmp((QueueItem.ucValue+2), "YYY")) {...}>
>> Wo ist mein Denkfehler?
>
> Anhand der knappen Informationen geraten: Du hast uebersehen, dass
> strcmp() 0 zurueck gibt, wenn beide Strings gleich sind.

Danke, das war zu offensichtlich. Ich glaub da hätte ich noch Stunden 
probieren können bevor mir das aufgefallen wäre :>

Gruß
Franz

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.