strtok

1、

Int main(void)

{

char *tmp = NULL;

Char *remotebuf=”0\r\n”;

tmp = strtok(remotebuf, DELIM);      执行出现段错误。

}

2、

Int main(void)

{

char *tmp = NULL;

char *remotebuf = NULL;

remotebuf = (char *)malloc(10);

strcpy(remotebuf, "0\r\n");

tmp = strtok(remotebuf, DELIM);      执行则没有问题。

}

3、

Int main(void)

{

Char *remotebuf=”0\r\n”;

Printf(“%s\n”,remotebuf);      执行没有问题

}                            

 

 

 

 

 

vi strtok

 

#include<string.h>

#include<stdio.h>

int main(void)

{

        char *p,coname[20]=":name:name1",*colon=":",*name;

        printf("%s\n",coname);

        p=strtok(coname,colon);

        printf("%s\n",p);

        printf("%s\n",coname);

        name=strtok(NULL,colon);

        printf("%s\n",name);

        return 0;

}

 

 

root@dbaudit-desktop:~/xcj# gcc -o strtok strtok.c

root@dbaudit-desktop:~/xcj# ./strtok

:name:name1

name

:name

name1

 

当strtok()在参数s的字符串中发现参数delim中包涵的分割字符时,则会将该字符改为\0 字符。因此第一次和第二次打印coname结果不同,数组默认结尾是\0。。

因此使用char *strtok(char s[], const char *delim);函数之前,要先把s拷贝出来一份。

 

posted @ 2014-11-21 09:40  水滴石穿xcj  阅读(226)  评论(0编辑  收藏  举报