NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(strtok関数の使い方)

strtok関数

 strtok関数は文字列を区切り文字で区切ってトークン(文字列の最小単位)に分解することが出来ます。
 Arduino IDEで使用するstrtok関数の使い方は以下の通りです。
 試しにこのプログラムをArduino UNOで実行すると、「$GPRMC」「142758.900」・・・「A*6D」と「,」で区切られたトークンがシリアルモニタ上に表示されます。
char Gps[] = "$GPRMC,142758.900,A,3542.6023,N,13948.6436,E,0.52,237.46,040816,,,A*6D";
char *A;

void setup() {
  Serial.begin(9600);
}

void loop() {
  A = strtok(Gps, ",");
  Serial.println(A);          //1つ目のトークン表示
  delay(1000);
  while (A != NULL) {      //トークンがNULLになるまでループ
    A = strtok(NULL, ","); //2回目以降は第一引数はNULL
    if (A != NULL) {
      Serial.println(A);
      delay(1000);
    }
  }
}
イメージ 1
図1:プログラム例
 
strtok(char*A,const char*B)のパラメータ
char*A          :分解する文字配列を指定します。
const char*B 区切り文字を指定します

補足  :戻り値は、区切り文字で区切られたトークンのポインタを返します。
区切り文字が見つからなければNULLを返します。文字列の中に区切り文字が複数ある場合は、2回目以降は第一引数をNULLにして実行すると、
戻り値がNULLになるまで、トークンのポインタが返ってきます。
 
イメージ 1
図1:シリアルモニタ出力結果
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る