- 浏览: 39048 次
- 性别:
- 来自: 广州
最新评论
函数strtok将字符串分解为一系列标记(token)标记就是一系列用分隔符(delimiting chracter,通常是空格或标点符号)分开的字符。例如,在一行文本中,每个单词可以作为标记,空格是分隔符。
需要多次调用strtok才能将字符串分解为标记(假设字符串中包含多个标记)。第一次调用strtok包含两个参数,即要标记化的字符串和包含用来分隔标记的字符的字符串(即分隔符):在图5.33的例子中,下列语句:
tokenPtr = Strtok(string, " ");
将tokenPtr赋给string中第一个标记的指针。strtok的第二个参数""表示string中的标记用空格分开。
函数strtok搜索string中不是分隔符(空格)的第一个字符,这是第一个标记的开头。然后函数寻找字符串中的下一个分隔符,将其换成null(, w,)字符,这是当前标记的终点。函数strtok保存string中标记后面的下一个字符的指针,并返回当前标记的指针。
后面再调用strtok时,第一个参数为NULL,继续将string标记化。NULL参数表示调用strtok继续从string中上次调用 strtok时保存的位置开始标记化。如果调用strtok时已经没有标记,则strtok返回NULL。图5.33的程序用strtok将字符串" This is sentence with 7 tokens"标记化。分别打印每个标记。注意strtok修改输入字符串,因此,如果调用strtok之后还要在程序中使用这个字符串,则应复制这个字 符串。
常见编程错误5.23
没有认识到strtok修改正在标记化的字符串,调用sstrtok后还在程序中使用这个字符串(以为还是原字符串) 函数strlen取一个字符串作为参数,并返回字符串中的字符个数,长度中不包括null终止符。
图5.34的程序演示了函数strlen。
1 // Fig. 5.33:fig05 33.cpp
2 // Using strtok
#include #include int main() { char string[] = "This is a sentence with 7 tokens"; char *tokenPtr; cout #include #ifdef _MT #include #endif /* _MT */ /*** *char *strtok(string, control) - tokenize string with delimiter in control * *Purpose: * strtok considers the string to consist of a sequence of zero or more * text tokens separated by spans of one or more control chars. the first * call, with string specified, returns a pointer to the first char of the * first token, and will write a null char into string immediately * following the returned token. subsequent calls with zero for the first * argument (string) will work thru the string until no tokens remain. the * control string may be different from call to call. when no tokens remain * in string a NULL pointer is returned. remember the control chars with a * bit map, one bit per ascii char. the null char is always a control char. * *Entry: * char *string - string to tokenize, or NULL to get next token * char *control - string of characters to use as delimiters * *Exit: * returns pointer to first token in string, or if string * was NULL, to next token * returns NULL when no more tokens remain. * *Uses: * *Exceptions: * ************************************************** *****************************/ char * __cdecl strtok ( char * string, const char * control ) { unsigned char *str; const unsigned char *ctrl = control; unsigned char map[32]; int count; #ifdef _MT _ptiddata ptd = _getptd(); #else /* _MT */ static char *nextoken; #endif /* _MT */ /* Clear control map */ for (count = 0; count > 3] |= (1 _token; #else /* _MT */ str = nextoken; #endif /* _MT */ /* Find beginning of token (skip over leading delimiters). Note that * there is no token iff this loop sets str to point to the terminal * null (*str == '\0') */ while ( (map[*str >> 3] & (1 > 3] & (1 _token = str; #else /* _MT */ nextoken = str; #endif /* _MT */ /* Determine if a token has been found. */ if ( string == str ) return NULL; else return string; }
发表评论
-
正则表达式限制文本框只能输入数字,小数点,英文字母,汉字
2012-07-06 09:45 804正则表达式限制文本框只能输入数字,小数点,英文字母,汉 ... -
[转载]VI正则表达式
2012-07-06 09:37 619原文地址:http://wowtianwen.blog.h ... -
Windows Mobile Device Emulator In-Depth
2012-07-06 09:30 743模拟器在Windows Mobil ... -
Gridview中当鼠标经过数据行时弹出一个层显示数据
2012-07-05 20:45 726JS代码 页面源码 ... -
WinCE下使用Media Play 组件中使用
2012-07-03 13:43 676由于最近做的 ... -
Flex4与WebService通信
2012-07-02 10:41 559首先需要一个需要提供一个WebService服务。这里用一 ... -
flex 幸运大转盘 代码
2012-07-02 10:41 721>"+testT.originY) ... -
Flex连接WebService实例
2012-07-02 10:41 493- ... -
Flex 4 Canvas backgroundImage 问题
2012-07-02 10:41 416倾听,慎言,勇行,自省... ... -
DAMP环境搭建详解 DAMP----Debian Apache2 Mysql PHP5
2012-07-01 00:18 788DAMP环境搭建详解 DAMP----Debian ... -
主流地图API比较
2012-07-01 00:18 648最近因为工作关系,对市面上主流的地图API都进行了一遍了解 ... -
Android HAL 介绍
2012-07-01 00:17 732HAL 介绍 Android 的 HAL (硬件抽像层 ... -
超级面板皮肤及其使用
2012-07-01 00:17 512画出类似于遨游那样的最大化,最小化,关闭,还原按钮的皮肤。 ... -
纪念Rokon停止更新――从零开始用Rokon开发一个小游戏
2012-07-01 00:17 571懒骨头你给我听着:你有健康的家人~满意的工作~未知的女友~ ...
相关推荐
一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被...
C++字符串分割源码,破解版VC助手,兼容多个windows版本
C语言strlen()函数:返回字符串的长度 头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的...
一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被...
strtok函数是字符串函数库中的一个函数,函数原型如下: char *strtok(char s[], const char *delim); 作用:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 例如:”hello,hi:what?is!the....
char *strtok(const char *strToken, const char *strDelimit) 将strToken中以字符串strDelimit进行分割.vs2010测试通过
这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入的值,均为16进制(不要加0x开头)
参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置...
前两个函数是输出字符串.字符串中如果有变量名则被替换成其值. 后两个函数类似于C的同名函数. (2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower, strtoupper,substr,ucfirst 这些是常用的字符串操作...
”)将一段字符串分割直到遇到”\0″. 比如,分隔符=“,” 字符串=“Fred,John,Ann” 通过strtok 就可以把3个字符串 “Fred” “John” “Ann”提取出来。 上面的C代码为 代码如下:int in=0;char buffer[]=”...
功能效果与strtok函数一样,但是效率极高,只要遍历一次字符串,就可以把字符串分割开,效率高于strtok
1、问题引入 自己在写一个linux下的模拟执行指令...2、自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a.c两个字符串、mv a.c b.c最后会被分割成mv和a.c和b.c三个字符串。 具体实现如下: #inc
1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou);...str_sou:待分割字符串。str_sep:分割符号。 第一次调用:temp = strtok(input, a);(input:字符串,a:分隔符); 之后调用: temp
C语言分隔字符串函数接口strsep int strsep(char* line, char* lines[MAXSUBSTR], char* delim) 利用strtok实现
一、用 strtok 函数进行字符串分割 二、用 STL 进行字符串的分割 三、用 Boost 进行字符串的分割
平时对字符串的操作的是很多的,了解下常用的字符串函数会使 c 编程变得很快捷!这里适当整理一下,方便以后参考。...当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为 字符。在第一
每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概技术学得不够全面啊!这里引用一段strtok用法: The strtok() function returns a pointer to the next “token” in...
C/C++ strtok函数 分割字符串 使用setprecision(n)可控制输出流显现浮点数的数字个数。C++默许的流输出数值有效位是6。 假如setprecision(n)与setiosflags(ios::fixed)适用,可以控制小数点右边的数字个数。...