有请jixingzhong(瞌睡虫·星辰)大哥看一下昨天帮我解决的问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{ static char rule[200]={ "block out -i if2 -a from 128.10.0.0.255.255.0.0 to any -p tcp -do 23 "};
char tmp[100]={0};
int index=0;
while(index <strlen(rule))
{
sscanf(rule+index, "%s ", tmp);
index += strlen(tmp)+1;
/字符串操作,比较/
}
system( "PAUSE ");
}星辰大哥昨天这个解决方法解决字符串拆分问题很牛,室和字符串问题。但是有一个问题,它把128.10.0.0.255.255.0.0当成一个字符串,tmp[0]= '1 ',tmp[1]= '2 '这样子,我现在需要把它当成IP地址去比较,也就是要把它当作数字,当字符这样子的话128.10和128.122的不同字符串他们各位是不一样的。我很希望能够tmp[0]=128,tmp[1]=10这样子好计算阿。不知道怎么操作?怎么能识别出合格字符串里面是数字,并且把128当成一个完整数字,而不是字符串呢?
[解决办法]
char tmp[]= "128.10.0.0.255.255.0.0 ";
int arr[8];
sscanf(tmp, "%d.%d.%d.%d.%d.%d.%d.%d ",
&arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6],&arr[7]);
int i;
for(i=0; i <8; i++)
printf( "%d ", arr[i]); //读取到数组了