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


von Franz (Gast)


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

von P. S. (Gast)


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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Franz schrieb:

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

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

von Franz (Gast)


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

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
Noch kein Account? Hier anmelden.