我正在尝试将爆炸的字符串与Arduino中的另一个字符串进行比较,但它不起作用。分割的字符串从串行端口读取。
首先,这些是我用来爆炸字符串的函数:
int count_delimiters(char str[], const char* delimiters) {
int i, j, result = 0;
for (i = 0; i < strlen(str); ++i) {
for (j = 0; j < strlen(delimiters); ++j) {
if (str[i] == delimiters[j]) {
++result;
}
}
}
return (result + 1);
}
char** split(char str[], const char* delimiters) {
int result_size = count_delimiters(str, delimiters);
int i = 0;
char* result[result_size];
char* pch = strtok(str, ",");
while (pch != NULL)
{
result[i] = pch;
pch = strtok(NULL, ",");
++i;
}
return result;
}
我尝试将爆炸字符串与另一个字符串进行比较的部分如下所示:
char input_array[input.length()];
input.toCharArray(input_array, (input.length() + 1));
exploded = split(input_array, ",");
if ("$test" == exploded[0]) {
Serial.println("match"); // This code is never reached.
}
当我在串口监视器中输入 $ test,other 时,我希望打印出一个匹配但不会打印任何内容。如果我Serial.println(exploded[0]);
,它会输出 $ test 。我做错了什么?
我已经尝试过寻找不可打印的字符,例如\r
,\n
和\0
,但它似乎不包含任何这些字符,因为当我检查时对于“$ test \ r”或其他人,它仍然不会返回true。
答案 0 :(得分:1)
在这一行:
if ("$test" == exploded[0])
使用strcmp而不是比较==。