linux下strtok和strtok_r的使用

来源:互联网 发布:微型网络摄像机 编辑:程序博客网 时间:2024/06/01 07:22

头文件 <string.h>

一、strtok

    .原型 char * strtok(char * s,const char * delim);

       功能 对字符串进行分段处理,每次调用strtok,返回由delim中任意一个字符分隔的一段字符串。

       参数说明:@s:输入字符串,且该字符串不能为const类型。

                           @delim:所有用于将@s进行分隔的字符

                           @return:每调用一次,返回字符串中的一段,以'\0'结束

      使用注意:第一次调用,传s进去,后面的调用都传NULL。

      函数实现原理:将@s中的所有delim字符都替换为‘\0',即原来字符串自动被分为多段,当传入的@s为NULL时,自动调用下一段;@s不为NULL时,返回从@s开始的第一段

      eg.

      char s[] = "111:222";

      char *p = strtok (s, ":");

      printf ("%s\r\n", p); //打印出111

      printf ("%s\r\n", s); //同样打印出111,因为原来@s中的":"被替换为'\0',截断了字符串。

      p = strtok (NULL, ":"); //注意传入参数为NULL。

      printf ("%s\r\n", p); //打印出222,原@s的第二段字符串


二、strtok_r

    原型 char *strtok_r(char *s, const char *delim, char **save);

    功能 与strtok一样,只是额外提供了线程安全功能

    参数@save,定义的一个空指针,在调用strtok_r函数时,将其地址( &save )传入函数,用于保存下一个字符串的起始位置

    eg.

     char s[] = "111:222";

     char *save = NULL; 

      char *p = strtok_r (s, ":", &save);  //传入save的地址

      printf ("%s\r\n", p); //打印出111

      printf ("%s\r\n", save); // @@@@@@@@@注意:打印出222,save指向下一段的开始


三、总结

    strtok函数,在执行一次之后,在函数内部使用一个变量保存下一个分段的位置。

    strtok_r函数,在执行一次之后,由用户定义的一个指针保存下一个分段的位置。

    微弱的区别。

0 0
原创粉丝点击