CHAR 比较是正确的,即使它是错误的

CHAR Compare is right, even when it's wrong

首先我是 C++ 编程的新手,目前我遇到了一个可能非常简单的问题。 我想,在让其他东西工作之后,在我看来,更加努力,我将实现一些字符串比较,我准备好了,哈哈...... 我试图弄清楚问题是什么,并从几个小时开始就在努力...

我尝试进行字符串比较。 通过串行打印,我看到了正确的字母。例如,我比较“A”和“B”。 我的问题是,这个比较是正确的,即使它是错误的。

bool debug = true;

void setup() {
  // put your setup code here, to run once:
if (debug) { Serial.begin(9600); }; // Initialize serial communications with the PC
}

void loop() {
    int result;

    char myWord[6] = "#VOGEL";
    char wordBuff[5];
    char wordLetter;
    char letterBuff;

    // I do this here, because actually i get all values from two RFID Reader
    strncpy( wordBuff, &myWord[1], 5 );
    wordBuff[5] = '[=10=]';
    
    for (int fieldNr = 0; fieldNr < 5; fieldNr++)
    {
      wordLetter = wordBuff[fieldNr];
      letterBuff = 'L';


        result = strcmp(letterBuff,wordLetter); // Should be every time wrong? But it is sometimes true?
              
        if ( result == 0)
        {
          if(debug){  Serial.print(F("Right Field: "));Serial.println(fieldNr);
          Serial.print(F(" LetterA: "));Serial.print(wordLetter);Serial.println(F("#")); 
          Serial.print(F(" LetterB: "));Serial.print(letterBuff);Serial.println(F("#"));}
        }
        else
        {
          if(debug){  Serial.print(F("Wrong Field: "));Serial.println(fieldNr);
          Serial.print(F(" LetterA: "));Serial.print(wordLetter);Serial.println(F("#")); 
          Serial.print(F(" LetterB: "));Serial.print(letterBuff);Serial.println(F("#"));}
        }
      }
    delay(1000); //NUR für TESTZWECKE
}

strcmp 仅适用于 const char *,而不是像您正在使用的单个 char。

我不记得 Arduino 是否允许您使用 std::string 但以防万一就使用它。 它向您介绍了更多的字符串处理方法。像s.find(c)那样return直接就是char在字符串中的位置。

顺便说一下,要比较 2 个字符,在您的示例中,只需使用一个简单的:

if(c1 == c2)
  ...
else
  ...

应该可以解决。