2016-05-04 7 views
0

Ich höre immer wieder, dass die Verwendung von == Operator zum Vergleichen von Zeichen kann einige Probleme verursachen.Verwenden von memcmp Vs. == in c (eingebettet) und unerwartete Fehler

Meine Frage ist - welche Art von Problemen?

Zum Beispiel gibt es einen Unterschied zwischen der Verwendung von:

if (Text[0] == 'A') { ; } 

und

if (!memcmp(Text, "A", 1)) { ; } 
+3

Nein, es sollte keinen Unterschied geben. Deine Frage ist ziemlich vage, wo hörst du diese Dinge? –

+2

Dies bezieht sich nicht wirklich auf eingebettete Systeme, sie funktionieren in diesem Fall genauso wie jede C-Plattform. – Lundin

Antwort

7

Sie haben zusammen zwei getrennte Ideen verwischt.

Es ist nichts falsch mit

if (Text[0] == 'A') 

werde es tun genau das, was Sie wollen.

Was Sie wahrscheinlich gehört, und was Sie nicht tun können, ist

if (Text == "A") 

, die praktisch immer falsch kommen, auch wenn Text enthält „A“.

Wenn Sie Strings vergleichen wollen, verwenden Sie in der Regel strcmp:

if(strcmp(Text, "A") == 0) 

Natürlich funktioniert dies nur auf richtig geformte, nullterminierten Strings.

Schließlich, während Sie sicher

if (!memcmp(Text, "A", 1)) 

tun können, wenn Sie wirklich wollen, ist es eine seltsame und potenziell ineffiziente Nutzung, die man nichts kauft.

+0

Großartig. Vielen Dank Steve. – elti