strtok的使用

charip[50]="192..168.0...8...";charf[]=".";char*a,*b,*c,*d;a=strtok(ip,f);b=strtok(NU... char ip[50] = "192..168.0...8...";
char f[] = ".";
char *a, *b, *c, *d;
a = strtok(ip, f);
b = strtok(NULL, f);
c = strtok(NULL, f);
d = strtok(NULL, f);
printf("[%s][%s][%s][%s]\n", a, b, c, d);
打印:
[192][168][0][8]

我理解strtok不是会找每个"."分隔的部分,那应该是:
[192][][168][0]?

谢谢指点!
问题补充:
这里主要是指strtok函数的分隔方式

另外,a = strtok(ip, f);的strtok函数第一个参数要求是指针?是否需要将:
char ip[50] = "192..168.0...8...";
a = strtok(ip, f);
换为
char ip[50] = "192..168.0...8...";
char *p = ip;
a = strtok(p, f);?
展开
 我来答
tunsanty
2010-09-28 · TA获得超过344个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:319万
展开全部
1. strtok 是要更改原来的值的,也就是说如果你后面还要使用ip的话,就必须在使用之前拷贝一个ip留作他用,如果不再使用ip的话,就不用管这么多了。

2. strtok不是分割每个"."
char ip[50] = "192..168.0...8...";

a = strtok(ip, f);
将ip改成 "192\0..168.0...8...";

b = strtok(NULL, f);
将ip改成 "192\0..168\0.0...8...";

c = strtok(NULL, f);
将ip改成 "192\0..168\0.0\0...8...";

d = strtok(NULL, f);
将ip改成 "192\0..168\0.0\0...8\0...";

最后ip的值就变成“192”了

正常的strtok做法是这样的:

a = strtok(ip, f);
printf("[%s]", a);
while (a) {
a = strtok(NULL, f);
if (a) {
printf("[%s]", a);
}
}

3. char ip[50], ip就表示数组的首地址,既然是地址,就不需要再多此一举了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式