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

strtok_r 字符分割

 
阅读更多

char * strtok_r(char *ptr, const char *sep, char **end)
{
    if(!ptr)
        /* we got NULL input so then we get our last position instead */
        ptr = *end;

    /* pass all letters that are including in the separator string */
    while(*ptr && strchr(sep, *ptr))
        ++ptr;

    if(*ptr)
    {
        /* so this is where the next piece of string starts */
        char *start = ptr;

        /* set the end pointer to the first byte after the start */
        *end = start + 1;

        /* scan through the string to find where it ends, it ends on a
           null byte or a character that exists in the separator string */
        while(**end && !strchr(sep, **end))
            ++*end;

        if(**end)
        {
            /* the end is not a null byte */
            **end = '\0';  /* zero terminate it! */
            ++*end;        /* advance the last pointer to beyond the null byte */
        }

        return start; /* return the position where the string starts */
    }

    /* we ended up on a null byte, there are no more strings to find! */
    return NULL;
}



----------------------------------------------------
使用方法

----------------------------------------------------

int main(int argv,char** argc)
{
    char * str;
    str = (char *)malloc(20);
    memset(str,20,0);
    sprintf( str, "123%s456%s789%s","oo","oo","oo");

    int length = strlen(str);
    char * tok=NULL;
    char *myStrBuf=NULL;
    int idx = 0;

    while (1)
    {

        if (!idx)
            tok = strtok_r(str,"oo",&myStrBuf);
        else
            tok = strtok_r(NULL,"oo",&myStrBuf);

        if (tok)
        {
            printf("%s \n ",tok );
            idx++;
        }
        else
        {
            printf("NULL\n\n");
            break;
        }
    }

    if (myStrBuf)
    {
        //printf("%d\n",(int)(myStrBuf));

        free(str);
    }
	system("pause");

}


分享到:
评论

相关推荐

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

    在C语言中,`strtok`函数用于分割字符串,但它存在一些限制,特别是在处理多层或嵌套的分隔符时。`strtok_r`函数是`strtok`的一个可重入版本,解决了`strtok`的弱点,更适用于复杂字符串处理。 1. `strtok`介绍: `...

    C语言strtok函数用法

    为了在多线程程序中安全地分割字符串,可以使用线程安全版本的`strtok_r`函数,其函数原型如下: ```c char *strtok_r(char *restrict str, const char *restrict delim, char **restrict saveptr); ``` `strtok_r...

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

    本文将深入探讨如何使用C语言中的`strtok`函数进行字符分割,以及它的一些限制和替代方案。 1. `strtok`函数介绍: `strtok`函数是C库中用于字符串分割的一个函数,它可以根据指定的分隔符将一个字符串切割成多个...

    strtok使用範例

    `strtok`和`strtok_r`是C语言中处理字符串的强大工具,可以帮助我们方便地分割字符串。理解它们的工作原理和正确使用方式对于C语言编程至关重要。通过实践和练习,你将能够熟练掌握这些函数,从而更有效地处理字符串...

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

    在深入探讨`strtok`函数的实现原理之前,我们首先需要了解`strtok`的基本功能。...在实际开发中,正确理解和使用`strtok_r`可以帮助开发者更轻松地处理复杂的字符串分割任务,尤其是在多线程环境中。

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

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

    自定义协议解析demo

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

    sunbin.rar_字符数组分割

    本文将深入探讨"字符数组分割"这一主题,结合C语言实验报告中的内容进行讲解。 字符数组,简而言之,就是一组连续的内存空间,用于存储字符。在C语言中,我们通常使用char类型的数组来实现字符数组。字符数组可以...

    c++实现字符串读取

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

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

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

    c语言字符串分割函数strtok

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

    c语言读取csv文件和c++读取csv文件示例分享

    在以下示例中,我们首先读取一行,然后使用`strtok_r()`按逗号分割字符串,分别获取姓名、年龄和生日: ```c #include #include // 省略trim()函数定义... int main() { FILE *fp = fopen("test.csv", "r"); ...

    201800130005_张畅_实验三1

    在C语言中,可以使用`strtok_r`函数来分割字符串,将输入的命令行分解为命令本身和参数。例如,如果用户输入`ls -l /home`,`strtok_r`会将`ls`识别为命令,`-l`和`/home`作为参数。处理时需注意保存未处理的剩余...

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

    C++中的`strtok()`函数是一个用于字符串分割的实用工具,它允许我们将一个大的字符串分解成多个由特定分隔符分隔的子字符串。下面是对`strtok()`函数的详细解释和使用示例。 **函数原型:** ```cpp char *strtok...

    c代码-分割字符串

    - `delim`: 分隔符字符串,可以包含多个字符,`strtok()`会从中寻找作为分割依据的字符。 下面是一个简单的使用`strtok()`的例子,展示了如何根据空格分割字符串: ```c #include #include int main() { char ...

    浅谈C语言的字符串分割

    本文将深入探讨C语言中用于字符串分割的函数`strtok()`,并展示如何有效地使用它来解析配置文件和处理其他字符串操作。 `strtok()`函数是C标准库中的一个功能强大的字符串处理函数,用于将一个字符串按照指定的分隔...

    strtok的赞歌.pdf

    根据空白分隔符(例如`" \t\n\r"`之一)分割单词。假设有个像`"/usr/include:/usr/local/include:."`这样的路径,在冒号处将其分开,形成单独的目录。根据一个简单的换行分隔符`"\n"`把一个字符串分割为不同的行。...

    c代码-ipstr2n

    这段代码首先通过`strtok_r`函数将IP地址分割成四个部分(八位字),然后使用`atoi`将每个部分转换为整数。最后,通过位移操作将这四个八位字组合成一个32位整数。`main`函数展示了如何使用`ipstr2n`函数,并打印出...

Global site tag (gtag.js) - Google Analytics