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);? 展开
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);? 展开
1个回答
展开全部
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就表示数组的首地址,既然是地址,就不需要再多此一举了
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就表示数组的首地址,既然是地址,就不需要再多此一举了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询