とか思って 自分で作ってみました
本来のstrtokは
char *strtok(char *s1, const char *s2);
ですが
今回はそんなに高性能じゃなくてもいいので
uint8_t *StrtokB(uint8_t *s1, const char s2);
として
複数の文字を指定する機能は付けていません
以下コード
uint8_t
*StrtokB(uint8_t *s1, const uint8_t s2) {
static
uint8_t *p = 0;
static
uint8_t *retP;
if (s1 !=
0) { p = s1; }
if (p == 0)
{ return(0); }
retP = p;
if (*retP
== '\0') { p = 0; return(0);
}
while(*retP
== s2) { retP++; }
p = retP + 1;
while(*p !=
s2) {
if (*p
== '\0') { break;
}
p++;
}
if (*p != '\0') { *p++ = '\0';
}
return(retP);
}
こんなかんじです
要らない部分とか色々突っ込みどころはアリそうだけど
とりあえず使えるか確認したかっただけなのでコレで良しとします
使い方は本来のstrtokとほぼ同じです
{
char s1[] =
"test.strtok.Hello.Wrold!...abc.123";
char *tok;
tok = StrtokB(s1, '.');
while(tok
!= 0) {
printf("\"%s\"\n",
tok);
tok = StrtokB(0, '.');
}
}
という感じで使えます
検索文字の複数化をしたい場合はstrchr使えば楽だと思います
必要に駆られたら実装するかも
さーて GPSのデコード処理書くかぁ(しろめ
検索文字の複数化をしたい場合はstrchr使えば楽だと思います
必要に駆られたら実装するかも
さーて GPSのデコード処理書くかぁ(しろめ
0 件のコメント:
コメントを投稿