2012-11-14 5 views
-1

Arduino에서 분해 된 문자열을 다른 문자열과 비교하려고하는데 작동하지 않습니다. 분할 된 문자열은 직렬 포트에서 읽습니다.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. 
} 

모든

첫째,이 내가 문자열을 폭발에 사용하는 기능입니다 $ 테스트를 입력하면 시리얼 모니터에 다른이 표시되지만 일치하는 내용이 인쇄 될 것으로 예상되지만 아무 것도 인쇄되지 않습니다. 내가 Serial.println(exploded[0]); 일 경우 $ 테스트을 출력해야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

는 이미 \r, \n\0 같은 인쇄 할 수없는 문자를 찾기 위해 노력했습니다,하지만,이 중 하나를 포함하지 않는 것 때문에 나는 "$ 테스트 \ r을"또는 다른 사람이 확인하는 경우 여전히 사실을 반환하지 않습니다. 이 라인

답변

1

대신 ==하여 비교

if ("$test" == exploded[0]) 

사용 STRCMP.