#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char IP_config[100]= "IPv4:192.168.200.245,Mask:255.255.255.245,Gateway:192.168.200.255,DHCP:0,VlanFlag:0,VlanID:0";
char IP_config2[100]= "IPv4:192.168.20.10,Mask:255.255.255.0,Gateway:192.168.20.1,DHCP:0,VlanFlag:0,VlanID:10";
struct tagIP_INFO
{
/* data */
char IP[16];
char Mask[16];
};
typedef struct tagIP_INFO IP_INFO;
typedef struct tagIP_INFO *ptr_IP_INFO;
void getIpConfig(char *str, ptr_IP_INFO pIpInfo){
//01 get the mask number string
int i=0,j=0;
char IPtemp[16];
str=str+5;
while(*str!=','){
IPtemp[i] =*str;
i++;str++;
}
str++;
IPtemp[i]='\0';
char ipstr[16]="";
memcpy(pIpInfo->IP, IPtemp, sizeof(IPtemp));
printf("ip:%s\t",pIpInfo->IP);
//02 get the mask number string
i=0;str=str+5;
char MaskTemp[16];
while(*str!=','){
MaskTemp[i] =*str;
i++;str++;
}
str++;
MaskTemp[i]='\0';
memcpy(pIpInfo->Mask, MaskTemp, sizeof(MaskTemp));
printf("mask:%s\n",pIpInfo->Mask);
}
int main() {
IP_INFO ipInfo1={0};
IP_INFO ipInfo2={0};
ptr_IP_INFO ptrIpInfo1 = &ipInfo1;
ptr_IP_INFO ptrIpInfo2 = &ipInfo2;
getIpConfig(IP_config, ptrIpInfo1);
printf("%s\t%s\n",ptrIpInfo1->IP,ptrIpInfo1->Mask);
getIpConfig(IP_config2, ptrIpInfo2);
printf("%s\t%s\n",ptrIpInfo2->IP,ptrIpInfo2->Mask);
return 0;
}
输出:
ip:192.168.200.245 mask:255.255.255.245
192.168.200.245 255.255.255.245
ip:192.168.20.10 mask:255.255.255.0
192.168.20.10 255.255.255.0
【 在 steven2012 的大作中提到: 】
: 很简单的结构体返回值访问问题;绕不出来,帮忙给看看是什么问题,或者有更好的办法解析字符串也可以,谢谢
: #include <stdio.h>
: #include <string.h>
: ...................
--
FROM 58.250.240.*