strtok

更新时间:2023-03-01 20:23:59 阅读: 评论:0

c++里面,函数strtok怎么用?

  strtok:
  分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
  功能:
  分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
  例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。
  函数使用:

  strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。
  c
  #include<string.h>
  #include<stdio.h>
  int main(void)
  {
  char input[16]="abc,d";
  char*p;
  /*strtok places a NULL terminator
  infront of the token,if found*/
  p=strtok(input,",");
  if(p)
  printf("%s\n",p);
  /*Acond call to strtok using a NULL
  as the first parameter returns a pointer
  to the character following the token*/
  p=strtok(NULL,",");
  if(p)
  printf("%s\n",p);
  return0;
  }
  

  c++
  
  #include<iostream>
  #include<cstring>
  using namespace std;
  int main()
  {
  char ntence[]="This is a ntence with 7 tokens";
  cout << "The string to be tokenized is:\n" << ntence << "\n\nThe tokens are:\n\n";
  char *tokenPtr=strtok(ntence,"");
  while(tokenPtr!=NULL) {
  cout<<tokenPtr<<'\n';
  tokenPtr=strtok(NULL,"");
  }
  //cout << "After strtok,ntence=" << tokenPtr<<endl;return0;
  }
  

  函数第一次调用需设置两个参数。第一次分割的结果,返回串中第一个 ',' 之前的字符串,也就是上面的程序第一次输出abc。
  第二次调用该函数strtok(NULL,","),第一个参数设置为NULL。结果返回分割依据后面的字串,即第二次输出d。
  strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
  线程安全的函数叫strtok_r,ca
  运用strtok来判断ip或者mac的时候务必要先用其他的方法判断'.'或':'的个数,因为用strtok截断的话,比如:"192..168.0...8..."这个字符串,strtok只会截取四次,中间的...无论多少都会被当作一个key
  其他相关信息
  下面的说明摘自于最新的Linux内核2.6.29,说明了这个函数已经不再使用,由速度更快的strp()代替
  /** linux/lib/string.c** Copyright (C) 1991, 1992 Linus Torvalds*//** stupid library routines.. The optimized versions should generally be found
  * as inline code in <asm-xx/string.h> 
  * The are buggy as well.. 
  * * Fri Jun 25 1999, Ingo Oer <ioe@informatik.tu-chemnitz.de> 
  * - Added strp() which will replace strtok() soon (becau strp() is 
  * reentrant and should be faster). U only strp() in new code, plea. 
  ** * Sat Feb 09 2002, Jason Thomas <jason@topic.com.au>, 
  * Matthew Hawkins <matt@mh.dropbear.id.au> 
  * - Kisd strtok() goodbye
  */

C语言中strtok用法

一般来说,条件关键词(if
el
el
if
for
while)只能作用于
紧随其后的
第一句
代码。
{
}的作用,你可以这么理解:是把‘被
括起来
的所有代码’
当成
‘一句代码’
送给关键词来处理。
注意:被括起来的可以是多句,当然也可以是一句哦。
if(a
==
b)
printf(
"a
==
b");
printf(
"a
!>
&&
a
!<b
");
这个时候
第二个
printf

if
来说不是紧随的第一句所以不受if
限制。一定会输出。
if(a
==
b)
{
printf(
"a
==
b");
printf(
"a
!>
&&
a
!<b
");
}
这个时候,整个大括号里的(两句
printf)就是
紧随
if
的第一句代码了。

C语言中strtok用法

  strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。
  strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
  线程安全的函数叫strtok_r,ca。
  运用strtok来判断ip或者mac的时候务必要先用其他的方法判断'.'或':'的个数,因为用strtok截断的话,比如:"192..168.0...8..."这个字符串,strtok只会截取四次,中间的...无论多少都会被当作一个key。
  函数strtok保存string中标记后面的下一个字符的指针,并返回当前标记的指针。
  后面再调用strtok时,第一个参数为NULL,继续将string标记化。NULL参数表示调用strtok继续从string中上次调用 strtok时保存的位置开始标记化。
  如果调用strtok时已经没有标记,则strtok返回NULL。注意strtok修改输入字符串,因此,如果调用strtok之后还要在程序中使用这个字符串,则应复制这个字 符串。

求大神讲一下strtok函数用法!!

原型:char *strtok(char s[], const char *delim);
作用:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
我不知道这个函数是干什么的 我查了一下百度百科 里面有一句“strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。”
所以我写了这段代码
char *p;
char str[]="123,456,789";
p=strtok(str,",");
printf("%s\n",p);
printf("%s\n",str);
p=strtok(NULL,",");
printf("%s\n",p);
printf("%s\n",str);
输出是:123
123
456
123
所以我可以得出结论 在第一次调用的时候str已经被破坏了(估计是把逗号换成\0了) 如果你还想使用它要用NULL做参数

C语言strtok函数能过滤换行符或者回车符吗

strtok函数能够过滤换行符或者回车符,只要分割字符串delim中包含字符" "即可。
1、strtok函数:
原型:char *strtok(char s[], const char *delim);
功能:将一个字符串分解为一组字符串,s为要分解的字符串,delim为分隔符字符串;
说明:当strtok函数在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针;
返回值:从字符串s开头开始的一个个被分割的字符串。分割结束时,返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点;

2、例程:

#include<string.h>
#include<stdio.h>
intmain(){
charinput[16]="abc,d,ef,g";//待分解字符串
char*delim=",";//分隔符字符串
char*p=strtok(input,delim);//第一次调用strtok
while(p!=NULL){//当返回值不为NULL时,继续循环
printf("%s ",p);//输出分解的字符串
p=strtok(NULL,delim);//继续调用strtok,分解剩下的字符串
}
return0;
}

c++的strtok函数

strtok函数在执行的时候,会修改原本的字符串,你使用char *key,那么key指向的内容保存在文字常量区,该区的内容是不能修改的,所以会出现内存错误。你只要吧char *key改成char key[1024],写一个大一点的数组就可以了

本文发布于:2023-02-28 20:24:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167767343985752.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:strtok.doc

本文 PDF 下载地址:strtok.pdf

上一篇:贪嗔痴
下一篇:返回列表
标签:strtok
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|