-2

例えば:

フレンドリー。

単語の最後にある「ly」は好きではありません。この文字列を「ly」でトークン化できますか

someCharVariable = strtok( "friendly"、 "ly")?

4

2 に答える 2

3

答えはノーだ。「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;
}
于 2013-02-14T03:24:02.597 に答える
0

strtok は char * を返します。したがって、somecharvariable ではなく somechar*var を使用する必要があります。

コードは文字列「friend」へのポインタを返し、「l」は「/0」に置き換えられます。

于 2013-02-14T03:24:55.320 に答える