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;

}

[email protected]:~/xcj# gcc -o strtok strtok.c

[email protected]:~/xcj# ./strtok

:name:name1

name

:name

name1

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

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

时间: 2024-10-11 10:36:35

strtok的相关文章

怪怪的函数strtok

// //#include<stdio.h>//strtok函数的利用 //int main() //{ // char p[] = "192.196.23.45"; // char *token=strtok(p, "."); // ///*printf("%s  ",token); // //while (token != NULL) // //{ // // token = strtok(NULL, ".")

C/C++ 字符串分割: strtok 与 strsep 函数说明

函数原型: char *strtok(char *s, const char *delim); char *strsep(char **s, const char *delim); 功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串.s为要分解的字符串,delim为分隔符字符串. 返回值:从s开头开始的一个个子串,当没有分割的子串时返回NULL. 相同点:两者都会改变源字符串,想要避免,可以使用strdupa(由allocate函数实现)或strdup(由malloc函

strtok&amp;strsep

strtok,strtok_r,strsep--extract tokens from strings Tje strsep() function was introduced as a replacement for strtok, since the latter cannot handle empty fileds. However, strtok conforms to C89/C99 and hence is more portable. #include <string.h> ch

字符串分割函数 STRTOK &amp; STRTOK_R (转)

1.一个应用实例 网络上一个比较经典的例子是将字符串切分,存入结构体中.如,现有结构体 typedef struct person{     char name[25];     char sex[10];     char age[4]; }Person; 需从字符串 char buffer[INFO_MAX_SZ]="Fred male 25,John male 62,Anna female 16"; 中提取出人名.性别以及年龄. 一种可行的思路是设置两层循环.外循环,先以 ',’

strtok():“字符串分割”实用函数

最近一直纠结于一个十分简单的问题:如何将一个字符串按标志分割开来?提出这个问题的初衷是自己在处理一个将命令行字符串转换为argc,argv格式的问题. 尝试了很多种方法,最后觉得利用strtok()函数来实现是一个比较好的方法.首先进行strtok()函数的介绍. char *strtok(string, control);  --- Tokenize string with delimiter in control. --- 通过分割符控制将字符串切片化. Purpose: strtok co

Hdu 1106 排序 (atoi函数与 strtok函数的应用

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1106 好久都没刷题了,今天突然特别怀念以前刷题的日子,所以就找了几道水题来做做~~呵呵 在写这篇博客之前呢,已经很明了自己已经大三了,时光匆忙,在还没来得及转过头来,就已经过了两年了大学,原来走了这么远了~~感觉再怎么样,大三还是不敢偷懒~~不过有时候还真是挺迷茫的说实话,在这里呢,真心希望能得到你们各位的建议,只要是对我未来就业有好处的,我都会虚心取纳,(BTW:我是学嵌入式方向的)万分感谢~~~

HDU2072 单词数 【STL】+【strtok】

单词数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28045    Accepted Submission(s): 6644 Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Inp

C语言分割字符串函数strtok

在编程过程中,有时需要对字符串进行分割.而有效使用这些字符串分隔函数将会给我们带来很多的便利. 下面我将在MSDN中学到的strtok函数做如下翻译. strtok :在一个字符串查找下一个符号 char *strtok( char *strToken, const char *strDelimit ); 返回值:返回指向在strToken字符串找到的下一个符号的指针,当在字符串找不到符号时,将返回NULL.每 次调用都通过用NULL字符替代在strToken字符串遇到的分隔符来修改strTok

strtok和strtok_r

原型:char *strtok(char *s, char *delim); 功能:分解字符串为一组字符串.s为要分解的字符串,delim为分隔符字符串. 说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL.        strtok在s中查找包括在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串. 返回值:从s开头開始的一个个被切割的串.当没有被切割的串时则返回NULL.           全部delim中包括的字符都会被滤掉,并将被滤掉的地方设为一

字符串的分割操作(strtok,split)

一:strtok C/C++:char *strtok(char s[], const char *delim); s 代表需要分割的字符串,delim代表分割的标志,参数都为比选!返回指向分割部分的指针,如果没有分割成功就返回NULL. 一个简单的例子: void main() { char *str = "jscese test strtok"; char *delim = " "; char *pstr = NULL; pstr = strtok(str, d