`
hgfghwq20
  • 浏览: 39048 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

分割字符串:strtok()函数

 
阅读更多

  函数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; } 
分享到:
评论

相关推荐

    C++常用字符串分割方法实例汇总

    一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被...

    C++字符串分割函数+VC助手

    C++字符串分割源码,破解版VC助手,兼容多个windows版本

    C语言中计算字符串长度与分割字符串的方法

    C语言strlen()函数:返回字符串的长度 头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的...

    C++的字符串分割函数的使用详解

    一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被...

    strtok函数的使用示例

    strtok函数是字符串函数库中的一个函数,函数原型如下: char *strtok(char s[], const char *delim); 作用:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 例如:”hello,hi:what?is!the....

    strtok函数C实现

    char *strtok(const char *strToken, const char *strDelimit) 将strToken中以字符串strDelimit进行分割.vs2010测试通过

    c语言字符串分割函数strtok

    这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入的值,均为16进制(不要加0x开头)

    C++中strtok()函数的用法介绍

    参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置...

    如何使用PHP中的字符串函数

    前两个函数是输出字符串.字符串中如果有变量名则被替换成其值. 后两个函数类似于C的同名函数. (2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower, strtoupper,substr,ucfirst 这些是常用的字符串操作...

    C语言切割多层字符串(strtok_r strtok使用方法)

    ”)将一段字符串分割直到遇到”\0″. 比如,分隔符=“,” 字符串=“Fred,John,Ann” 通过strtok 就可以把3个字符串 “Fred” “John” “Ann”提取出来。 上面的C代码为 代码如下:int in=0;char buffer[]=”...

    字符串分割

    功能效果与strtok函数一样,但是效率极高,只要遍历一次字符串,就可以把字符串分割开,效率高于strtok

    c语言中字符串分割函数及实现方法

    1、问题引入 自己在写一个linux下的模拟执行指令...2、自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a.c两个字符串、mv a.c b.c最后会被分割成mv和a.c和b.c三个字符串。 具体实现如下: #inc

    c语言 字符串的拼接和分割实例

    1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou);...str_sou:待分割字符串。str_sep:分割符号。 第一次调用:temp = strtok(input, a);(input:字符串,a:分隔符); 之后调用: temp

    C语言分隔字符串函数接口strsep

    C语言分隔字符串函数接口strsep int strsep(char* line, char* lines[MAXSUBSTR], char* delim) 利用strtok实现

    20120324_字符串分割(C++)1

    一、用 strtok 函数进行字符串分割 二、用 STL 进行字符串的分割 三、用 Boost 进行字符串的分割

    字符串C++整理

    平时对字符串的操作的是很多的,了解下常用的字符串函数会使 c 编程变得很快捷!这里适当整理一下,方便以后参考。...当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为 字符。在第一

    浅谈C语言的字符串分割

    每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概技术学得不够全面啊!这里引用一段strtok用法: The strtok() function returns a pointer to the next “token” in...

    c++的一些问题

    C/C++ strtok函数 分割字符串 使用setprecision(n)可控制输出流显现浮点数的数字个数。C++默许的流输出数值有效位是6。 假如setprecision(n)与setiosflags(ios::fixed)适用,可以控制小数点右边的数字个数。...

Global site tag (gtag.js) - Google Analytics