我正在尝试在一个代码中使用相同的分隔符来转换两个不同的字符串。 我只能让它一次使用一个字符串。如果我尝试用两个字符串来做它,它就不起作用。
似乎ipdel[i] = strtok (ip," ,.-");
和maskedel[j] = strtok (maske," ,.-");
互相干扰。
为什么这两个人互相干扰,我该如何解决?
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stddef.h>
int i;
int j;
int main()
{
char ip[16]="128.39.75.1";
char maske[16]="255.255.254.0";
char *ipdel[4];
char *maskedel[4];
char bitvar[4];
char *pholder;
printf ("Splitting string \"%s\" into tokens:\n",ip);
ipdel[i] = strtok (ip," ,.-");
//maskedel[i] = strtok (maske," ,.-");
while (ipdel[i] != NULL)
{
i=i++;
ipdel[i] = strtok (NULL, " ,.-");
//maskedel[i] = strtok (NULL, " ,.-");
}
maskedel[j] = strtok (maske," ,.-");
while (maskedel[j] != NULL)
{
j=j++;
maskedel[j] = strtok (NULL, " ,.-");
}
for (i=0;i<4;i++){
printf("%s\n", ipdel[i]);
}
for (i=0;i<4;i++){
printf("%s\n", maskedel[i]);
}
return 0;
}
使用strok_s解决了我的问题。 Thanx家伙。
ipdel[i] = strtok_s( ip, seps, &next_token1);
maskedel[i] = strtok_s( maske, seps, &next_token2);
while ((ipdel != NULL) || (maskedel != NULL))
{
// Get next token:
for(i=1;i<4;i++)
{
ipdel[i] = strtok_s(NULL, seps, &next_token1);
maskedel[i] = strtok_s(NULL, seps, &next_token2);
}
break;
}