例えば:
フレンドリー。
単語の最後にある「ly」は好きではありません。この文字列を「ly」でトークン化できますか
someCharVariable = strtok( "friendly"、 "ly")?
答えはノーだ。「ly」の例は、「l」または「y」または「yl」または「ly」のいずれかの出現を区切ります
delimiter パラメーターは文字の配列であり、それぞれが区切り文字として機能することを意味します。
これはあなたが求めたものの例です:
char *iterate(char *p, const char *d, const size_t len)
{
while(p!=NULL && *p && memcmp(p, d, len)==0)
{
memset(p, 0x0, len);
p+=len;
}
return p;
}
char **
tokenize( char **result, char *working, const char *src, const char *delim)
{
int i=0;
char *p=NULL;
size_t len=strlen(delim);
strcpy(working, src);
p=working;
for(result[i]=NULL, p=iterate(p, delim, len); p!=NULL && *p; p=iterate(p, delim, len) )
{
result[i++]=p;
result[i]=NULL;
p=strstr(p, delim);
}
return result;
}
strtok は char * を返します。したがって、somecharvariable ではなく somechar*var を使用する必要があります。
コードは文字列「friend」へのポインタを返し、「l」は「/0」に置き換えられます。