Problem mit Char-Array in Struct

Gast #2032824
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:
1
if(QueueItem.ucValue[2] == 'X' &&
2
   QueueItem.ucValue[3] == 'X' &&
3
   QueueItem.ucValue[4] == 'X' &&
4
   QueueItem.ucValue[5] == '\0') {...}

Will ich es aber über strcmp machen klappt es nicht.
1
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
Gast #2032829
Lesenswert?

Franz schrieb:

>
1
> if(QueueItem.ucValue[2] == 'X' &&
2
>    QueueItem.ucValue[3] == 'X' &&
3
>    QueueItem.ucValue[4] == 'X' &&
4
>    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.

>
1
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.
Gast #2032854
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

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