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)