티스토리 뷰

Arduino

[Arduino] index함수를 통한 Text 분리

생각많은 소심남 2012. 3. 19. 21:53
지난 포스팅에서 string이란 변수를 확인해보는 코드를 다뤄봤었는데 이번에는 지난 번에 잠깐 언급했던 index함수에 대해서 언급해보고자 합니다. index함수는 다음과 같이 씁니다.

String형 변수.index('자신이 찾고자 하는 문구') 

이를 확인해보기 위해서 string형 변수와 이를 확인하기 위한 CommaPosition을 int형으로 잡습니다.그리고 setup에선 컴퓨터와의 직렬통신을 위해서 baud rate을 맞춰야 하겠지요.
 


자 이제 본격적인 확인에 들어가야 합니다. 위에서 언급한 문법처럼 적용합니다.


index를 했을때 해당 character가 없는 경우에는 -1 값을 return해줍니다. 그래서 위와 같은 경우에는 message를 계속 돌리면서 ,가 없을때는 if구문을 벗어나고 아니면 if안의 실행 구문을 실행시키겠지요. 이에 대한 조건문을 다음과 같이 구성합니다.

 


여기에 새로운 substring()이란 함수가 등장합니다. 아시던 분도 계시겠지만 substring()은 자료를 받아서 그 자료내에 들어있는 문자열을 반환하는 함수입니다. 참고로 유의할 것은 위처럼 0,commaPosition이라는 범위는 사실 0부터 commaPosition-1 까지의 범위를 나타낸다는 것입니다. 그래서 commaPosition까지의 message를 ,를 기점으로 계속 저장을 시킨다는 것을 확인 할 수 있습니다. 즉 계속 이 루프가 돌아간다면 message에는 Peter, Paul, Mary가 차례대로 저장된다는 겁니다. 이에 대한 Serial Monitor의 결과는 다음과 같이 나옵니다.
 


이렇게 message를 ,를 통해서 뽑아낼 수 있습니다. C를 잘하시는 분이라면 위와 같이 index를 사용하는 게 아니라
다른 방법으로 해당 message를 뽑아 낼 수 있지요. 다음 내용이 C에 대한 내용입니다.
 


우선 C만의 내용으로 접근하기 위해서는 Strtok_r이란 함수를 사용해서 문자열로부터 토큰을 뽑아내는 과정이 필요합니다. 그런데 보다시피 포인터도 사용해야 되고 일일이 버퍼로 옮겼다가 빼는 복잡한 과정이 필요합니다.
물론 실험 결과는 다음과 같습니다.

 
결과야 엇비슷하게 나오는데 확실히 java에서 파생된 index 함수를 쓰면 조금 편리하게 문자열을 뽑아올 수 있겠지요.
뭐 아니면 키패드로 암호화 하는 작업도 이를 이용하면 편리하게 써먹을 수도 있겠구요. 

댓글