`
bingtears
  • 浏览: 188391 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

strtok, wcstok, _mbstok

    博客分类:
  • C++C
阅读更多

Find the next token in a string.

char *strtok( char *strToken, const char *strDelimit );

wchar_t *wcstok( wchar_t *strToken, const wchar_t *strDelimit );

unsigned char *_mbstok( unsigned char*strToken, const unsigned char *strDelimit );

Routine Required Header Compatibility
strtok <string.h> ANSI, Win 95, Win NT
wcstok <string.h> or <wchar.h> ANSI, Win 95, Win NT
_mbstok <mbstring.h> Win 95, Win NT


For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version


Return Value

All of these functions return a pointer to the next token found in strToken. They return NULL when no more tokens are found. Each call modifies strToken by substituting a NULL character for each delimiter that is encountered.

Parameters

strToken

String containing token(s)

strDelimit

Set of delimiter characters

Remarks

The strtok function finds the next token in strToken. The set of characters in strDelimit specifies possible delimiters of the token to be found in strToken on the current call. wcstok and _mbstok are wide-character and multibyte-character versions of strtok. The arguments and return value of wcstok are wide-character strings; those of _mbstok are multibyte-character strings. These three functions behave identically otherwise.

Generic-Text Routine Mappings

TCHAR.H Routine  _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined
_tcstok strtok  _mbstok  wcstok 


On the first call to strtok, the function skips leading delimiters and returns a pointer to the first token in strToken, terminating the token with a null character. More tokens can be broken out of the remainder of strToken by a series of calls to strtok. Each call to strtok modifies strToken by inserting a null character after the token returned by that call. To read the next token from strToken, call strtok with a NULL value for the strToken argument. The NULL strToken argument causes strtok to search for the next token in the modified strToken. The strDelimit argument can take any value from one call to the next so that the set of delimiters may vary.

Warning    Each of these functions uses a static variable for parsing the string into tokens. If multiple or simultaneous calls are made to the same function, a high potential for data corruption and inaccurate results exists. Therefore, do not attempt to call the same function simultaneously for different strings and be aware of calling one of these function from within a loop where another routine may be called that uses the same function.   However, calling this function simultaneously from multiple threads does not have undesirable effects.

Example

/* STRTOK.C: In this program, a loop uses strtok
* to print all the tokens (separated by commas
* or blanks) in the string named "string".
*/

#include <string.h>
#include <stdio.h>

char string[] = "A string\tof ,,tokens\nand some   more tokens";
char seps[]    = " ,\t\n";
char *token;

void main( void )
{
    printf( "%s\n\nTokens:\n", string );
    /* Establish string and get the first token: */
    token = strtok( string, seps );
    while( token != NULL )
    {
       /* While there are tokens in "string" */
       printf( " %s\n", token );
       /* Get next token: */
       token = strtok( NULL, seps );
    }
}

Output

A string    of ,,tokens
and some   more tokens

Tokens:
A
string
of
tokens
and
some
more
tokens

分享到:
评论

相关推荐

    Linux C编程一站式学习 25章习题_strtok & strtok_r

    1、出于练习的目的,strtok和strtok_r函数非常值得自己动手实现一遍,在这个过程中不仅可以更深刻地理解这两个函数的工作原理,也为以后理解“可重入”和“线程安全”这两个重要概念打下基础。 代码是自己实现的...

    strtok的缺陷,使用strtok_s函数更新安全度

    strtok的缺陷,使用strtok_s函数更新安全度 #include "stdafx.h" #include "Windows.h" #include #include using namespace std; char string1[] = "A string\tof ,,tokens\nand some more tokens"; char ...

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

    `strtok_r`函数的原型为`char *strtok_r(char *s, const char *delim, char **ptrptr)`,它增加了一个外部指针参数`ptrptr`,使得我们可以控制切割的状态。这样,即使在多层分割或递归调用的情况下,也能保持正确的...

    strrchr strtok_r C库函数使用

    strrchr strtok_r C库函数使用

    C语言strtok函数用法

    `strtok_r`函数添加了一个额外的`saveptr`参数,用于保存内部状态,这样即使在多线程环境下也能确保正确分割字符串。 总结起来,`strtok`函数是C语言中用于字符串分割的重要工具,它允许我们根据指定的分隔符轻松地...

    strtok使用範例

    为了解决这个问题,你可以使用`strtok_r`函数,这也是压缩包中的`strtok_r2`文件可能涉及的内容。 - **修改原字符串**:`strtok`在找到分隔符时会将其替换为终止符`\0`,这意味着它会修改原始字符串。 - **空格...

    strtok 实现 原代码 strtok 实现 原代码

    在给定的代码片段中,我们可以看到这是一个`strtok_r`函数的实现,`strtok_r`是`strtok`的一个线程安全版本。相比于`strtok`,`strtok_r`使用静态变量来存储中间状态,从而避免了全局变量的使用,这在多线程环境下是...

    自定义协议解析demo

    本示例“自定义协议解析demo”是关于如何使用C语言来解析非标准的通信协议,其中核心工具是`strtok_r`函数,用于高效地分割字符串。 首先,我们了解什么是自定义协议。在计算机通信中,协议定义了数据传输的格式和...

    strtok函数的用法 strtok函数的用法

    strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok...

    经典的C语言字符分割文档

    为了解决`strtok`的这些问题,C标准库提供了一个可重入版本`strtok_r`,它允许在多线程环境下安全地使用,并且可以方便地处理连续的分隔符操作。`strtok_r`函数的原型如下: ```c char *strtok_r(char *str, ...

    strtok函数C实现

    ### strtok函数C实现 #### 函数定义与作用 在C语言中,`strtok`函数是一种常用的方法,用于将一个字符串根据指定的分隔符分割成多个子串。本篇文章介绍了一个自定义版本的`strok`函数实现,并提供了一个简单的示例...

    strtok函数的用法大全

    `strtok`函数是C语言中用于字符串处理的一个重要函数,它主要用于将一个字符串按照指定的分隔符切割成多个子串。这个函数的核心在于它能够动态地追踪字符串的分割状态,使得在后续调用中可以从上次切割的位置继续...

    使用strtok函数截取字符串得到相应的子串存入数组中

    在C/C++编程中,`strtok`函数是一种常用的字符串处理工具,用于将字符串分割成多个子串。这个函数在处理复杂格式的数据时非常有用,比如解析包含多种数据类型的字符串。在给定的场景中,我们需要从一个字符串中提取...

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

    函数原型:char *strtok(char *s, const char *delim);Function:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。Description:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串...

    C++ strtok应用方式浅析

    在C++编程语言中,对于字符的处理,可以通过使用C++ strtok来进行具体的操作。那么正确的应用方法我们将会在这篇文章中为大家详细介绍,希望能对大家有所帮助,提高实际程序开发效率。

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

    本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考。具体分析如下: 我们在编程的时候经常会碰到字符串...其它:strtok函数线程不安全,可以使用strtok_r替代。 示例: //借助strtok实现split #include &lt;

    c++实现字符串读取

    每次调用`strtok_r`都会返回一个指向当前分割出的字符串的指针,并更新外部存储空间以记录上一次分割的位置。 3. **内层循环**:对于每一个由逗号分割出的部分,再次使用`strtok_r`以空格为分隔符进行二次分割。 4...

    C++ 字符串截取(strtok)

    ### C++ 中使用 `strtok` 进行字符串截取详解 在C++编程语言中,处理字符串是一项常见的任务。特别是在需要对字符串进行分隔、提取特定子串的情况下,掌握有效的字符串操作技巧至关重要。本文将详细介绍如何使用 `...

    strtok函数的使用示例

    strtok函数的使用示例 strtok函数是C语言标准库中一个非常重要的字符串函数,它可以将一个字符串分割成多个子字符串,根据指定的分隔符来分割字符串。在今天的分享中,我们将详细介绍strtok函数的使用示例,包括...

Global site tag (gtag.js) - Google Analytics