使用 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))

如果您真的想要,这是一种奇怪且可能效率低下的用法,不会给您带来任何好处。