Strtok
函数
原型:char *strtok(char *s, char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。
strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。
返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
该函数把你的字符串需要分割的部分置成了null
例如:
char a[]="abcde//abcde//abcde"
处理后变成
abcde(NULL)abcde(NULL)abcde(NULL)
然后它再一个一个NULL的跳
//strtok
函数
#include
<string.h>
#include
<stdio.h>
int
main(void)
{
char input[16] = "abc,d";
char *p;
p = strtok(input, ",");
if (p)
printf("%s/n", p);
p = strtok(NULL, ",");
if (p)
printf("%s/n", p);
return 0;
}
|
#include
<string.h>
#include
<stdio.h>
char
string[] = "A string/tof ,,tokens/nand some more tokens";
char
seps[] = " ,/t/n";
char
*token;
int
main ()
{
printf("%s/n/n:/n", string);
/*
最初的位置取得*/
token = strtok(string,seps);
while (token != NULL)
{
/*
重复取得位置 */
printf( " %s/n", token );
/*
下一个NULL取得 */
token = strtok( NULL, seps );
}
return 0;
}
|
输出结果:
A string of ,,tokens
A string of ,,tokens
and some more tokens
:
A
string
of
tokens
and
some
more
tokens
strdup
函数
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
用 法: char *strdup(char *str);
#include
<stdio.h>
#include
<string.h>
int
main(void)
{
char *dup_str, *string = "abcde";
dup_str = strdup(string);
printf("%s/n", dup_str);
return 0;
}
|
#include
<stdio.h>
#include
<string.h>
#include
<malloc.h>
char
*fun(char *a);
int
main(int argc, char* argv[])
{
char *string = "This is a good day today";
char *ll=fun(string);
printf("%s",ll);
return 0;
}
char
*fun(char *a)
{
char *ptt = (char *)malloc(strlen(a));
ptt = a;
char *ftt = (char *)malloc(strlen(a));
*ftt = '/0';
char step[] = " ";
char *token;
token = strtok( strdup(a),step);
/*strtok()
检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔*/
/*strdup()
将字符串s复制到最近建立的单元*/
while(token != NULL)
{
strcat(ftt,strrev(token)); /*strrev()
将字符串s复制到最近建立的单元*/
strcat(ftt," ");
token = strtok( NULL,step);
}
//*(ftt + strlen(a)-1) = '/0';
return ftt;
}
|