如下程序找到被字符','或'.'间隔的字符串。
[php]
#include<string.h>
main ()
{
char aa[] = ",,ab,,cd,ef.,n.,.,";
int i;
char *bb;
for (i = 0; i < sizeof (aa); i++)
printf ("%d,", aa);
printf ("\naa=%s\n\n", aa);
bb = strtok (aa, ",.");
for (i = 0; i < sizeof (aa); i++)
printf ("%d,", aa);
printf ("\naa=%s\n", aa);
printf ("bb=%s\n\n", bb);
while ((bb = strtok (NULL, ",.")) != NULL)
{
for (i = 0; i < sizeof (aa); i++)
printf ("%d,", aa);
printf ("\naa=%s\n", aa);
printf ("bb=%s\n", bb);
}
}
[/php]
结果显示:
44,44,97,98,44,44,99,100,44,101,102,46,44,110,46,44,46,44,0,
aa=,,ab,,cd,ef.,n.,.,
44,44,97,98,0,44,99,100,44,101,102,46,44,110,46,44,46,44,0,
aa=,,ab
bb=ab
44,44,97,98,0,44,99,100,0,101,102,46,44,110,46,44,46,44,0,
aa=,,ab
bb=cd
44,44,97,98,0,44,99,100,0,101,102,0,44,110,46,44,46,44,0,
aa=,,ab
bb=ef
44,44,97,98,0,44,99,100,0,101,102,0,44,110,0,44,46,44,0,
aa=,,ab
bb=n
说明strtok对原数组aa进行了更改:
1.开头的','或'.'不改。
2.如果遇到连续的',.'串,只将第一个改为'\0'。 |