C – IF(char ==“ZYX”)不起作用

我从arduino发送到arduino字符串(I2C),捕获并保存到char [10]。 当我将这个变量与文本进行比较时,条件没有执行: – /我不知道为什么……

char dataRx[10] = ""; void DaemonReceiving(int howMany){ int index = 0; while(Wire.available() > 0){ char c = Wire.read(); dataRx[index++] = c; dataRx[index] = '\0'; } Serial.println(dataRx); if(dataRx == "HELLO"){ Wire.beginTransmission(1); Wire.write("HI"); Wire.endTransmission(); } } 

要将dataRX字符串与“HELLO”进行比较,请使用:

 if (strcmp (dataRx,"HELLO") == 0) { // matches HELLO } 

如果它是C你必须使用strcmp ,否则你只是比较两个指针 – “HELLO”的位置和dataRx的位置(将失败)

请注意,这与arduino没有任何关系:)

这会比较指针值:

 if(dataRx == "HELLO") 

你需要strcmp字符串比较:

 if(strcmp(dataRx, "HELLO") == 0)