使用 memcmp 与。 == in c (embedded) 和意外错误
Using memcmp Vs. == in c (embedded) and unexpected errors
我一直听说使用 ==
运算符比较字符会导致一些问题。
我的问题是 - 什么样的问题?
例如,使用有什么区别:
if (Text[0] == 'A') { ; }
和
if (!memcmp(Text, "A", 1)) { ; }
您混淆了两个不同的想法。
没问题
if (Text[0] == 'A')
它会如你所愿。
你可能听说过的,但你做不到的是
if (Text == "A")
这几乎总是错误的,即使 Text
包含 "A"。
如果要比较字符串,一般使用strcmp
:
if(strcmp(Text, "A") == 0)
当然,这只适用于格式正确、以 null 结尾的字符串。
最后,虽然你当然可以做到
if (!memcmp(Text, "A", 1))
如果您真的想要,这是一种奇怪且可能效率低下的用法,不会给您带来任何好处。
我一直听说使用 ==
运算符比较字符会导致一些问题。
我的问题是 - 什么样的问题?
例如,使用有什么区别:
if (Text[0] == 'A') { ; }
和
if (!memcmp(Text, "A", 1)) { ; }
您混淆了两个不同的想法。
没问题
if (Text[0] == 'A')
它会如你所愿。
你可能听说过的,但你做不到的是
if (Text == "A")
这几乎总是错误的,即使 Text
包含 "A"。
如果要比较字符串,一般使用strcmp
:
if(strcmp(Text, "A") == 0)
当然,这只适用于格式正确、以 null 结尾的字符串。
最后,虽然你当然可以做到
if (!memcmp(Text, "A", 1))
如果您真的想要,这是一种奇怪且可能效率低下的用法,不会给您带来任何好处。