-3

この「(555) 333-444」のトークンを分離しようとすると、以下のコードで目的の出力が得られません。これらすべての 555、333、444 を個別に分離する機能が必要です。私の間違いは何ですか?

出力:

555

333-444

#include <stdio.h>
#include <string.h>

int main(void){

char *ptr;

char tel[]="(555) 333-444";

ptr=strtok(tel,"-() ");

while (ptr!=NULL)
{
    printf("%s\n", ptr);
    ptr=strtok(NULL," ");

}

getch();
}
4

1 に答える 1

2

これ:

ptr=strtok(NULL," ");

実際には次のようになります。

ptr=strtok(NULL,"-() ");

ループで使用する区切り文字を常に示す必要があります。strtokそれらを「覚えていません」。

または、次のようなものを使用して、その区切り文字のセットをconst char* delimiters = "-() ";使用するたびにそれを使用することもできます (例: )。strtokptr = strtok(string, delimiters);

必要なすべての区切り記号を手動でリストする必要はありません。

于 2013-09-09T13:57:19.847 に答える