C语言中strtok用法

#include<string.h>#include<stdio.h>main(){chars[]="WangNIangHuangddddangccccangldldld... #include <string.h>
#include <stdio.h>
main()
{
char s[]= "Wang NIang Huangddddangccccang ldldldang XXXXXXXX ";
char *d= "ang ";//在s串中将包含有 "ang "的位置处加上NULL,注意空格的输出
char *p;

p=strtok(s,d);//第一次调用,传要处理的串参数地址s
while(p)
{
printf( "%s\n ",p);
p=strtok(NULL,d); }

getchar();
return 0;
}

p=strtok(NULL,d);
这里不懂!啥意思。
谢谢了!
额,还是不懂strok(NULL,d)是啥意思。主要是NULL这里用是咋的不明白!
展开
 我来答
星月小木木
2016-01-15 · TA获得超过3.2万个赞
知道大有可为答主
回答量:2.4万
采纳率:0%
帮助的人:1亿
展开全部
  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之后还要在程序中使用这个字符串,则应复制这个字 符串。
帅得有点坏
2010-11-08 · TA获得超过1149个赞
知道小有建树答主
回答量:463
采纳率:0%
帮助的人:479万
展开全部
你的问题让我研究了一晚上,
也没弄明白,哎,
这个代码太神奇了。
不知道用什么标记了第一个字符指针的起始位置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unixzyy
推荐于2018-03-04
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
原型
char *strtok(char *s, char *delim);
编辑本段功能
分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
编辑本段说明
首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('')来替换,直到找遍整个字符串。 char * p = strtok(s,";"); p = strtok(null,";"); 在调用的过程中,字串s被改变了,这点是要注意的。
编辑本段返回值
从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。 所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式