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这里用是咋的不明白! 展开
#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这里用是咋的不明白! 展开
3个回答
展开全部
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是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置
线程安全的函数叫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之后还要在程序中使用这个字符串,则应复制这个字 符串。
展开全部
你的问题让我研究了一晚上,
也没弄明白,哎,
这个代码太神奇了。
不知道用什么标记了第一个字符指针的起始位置。
也没弄明白,哎,
这个代码太神奇了。
不知道用什么标记了第一个字符指针的起始位置。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原型
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中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
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中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询