读书人

现在有个html页面里面包括ip地址用

发布时间: 2013-07-09 09:50:48 作者: rapoo

现在有个html页面,里面包括ip地址,用c怎么把ip读出来
html如下

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="ip">192.168.1.3</div>
</body>
</html>

[解决办法]
找到<div id="ip">,然后读后面的东西
[解决办法]
网上下个正则表达式的库,然后每次读取一行,用正则匹配就行了,比如\d表示数字,*表示匹配所有,/表示最少匹配,那你的匹配规则应该是像这个样子的 */[(\d).]{0,3}\d*
[解决办法]
引用:
html如下

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="ip">192.168.1.3</div>
</body>
</html>


char *ip;
char *start;
char *end;

if(!(start = strstr(string, " id=\"ip\">)))
return;
start += 8;
if(!(end = strchr(start, '<')))
return;
if( end-start < 7
[解决办法]
end-start > 15)
return;
if(!(ip = malloc(16))
return;
memset(ip, '0', 16);
memcpy(ip, start, end-start);

PS:小心string族的函数
[解决办法]
仅供参考
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const char * lpszBt = "<beatheart><probe_type>1</probe_type><probe_id>0800276D3191</probe_id><probe_ip>192.168.16.240</probe_ip><cpu>2</cpu><mem>81</mem><hd>32</hd><netcard><device>eth0</device><status>0</status><usage>0</usage><drop>0</drop></netcard><time>2013-4-23 16:21:23</time></beatheart>";
char tszBuffer[1024];
char tszMatch[128];
char mk1[83],mk2[84];
int getmark(char *src,char *mark) {
char *p,*q;
int L;

sprintf(mk1,"<%.80s>",mark);
sprintf(mk2,"</%.80s>",mark);
p=strstr(tszBuffer,mk1);
if (!p) return 1;
q=strstr(p,mk2);
if (!q) return 2;


L=strlen(mk1);
strncpy(tszMatch,p+L,__min(q-p-L,127));tszMatch[__min(q-p-L,127)]=0;
return 0;
}
int main() {
strncpy(tszBuffer,lpszBt,1023);tszBuffer[1023]=0;
if (getmark(tszBuffer,"netcard")) return 1;
printf("%s\nnetcard=%s\n",tszBuffer,tszMatch);
strncpy(tszBuffer,tszMatch,1023);tszBuffer[1023]=0;
if (getmark(tszBuffer,"device")) return 1;
printf("%s\ndevice=%s\n",tszBuffer,tszMatch);
if (getmark(tszBuffer,"status")) return 1;
printf("%s\nstatus=%s\n",tszBuffer,tszMatch);
if (getmark(tszBuffer,"usage")) return 1;
printf("%s\nusage=%s\n",tszBuffer,tszMatch);
if (getmark(tszBuffer,"drop")) return 1;
printf("%s\ndrop=%s\n",tszBuffer,tszMatch);
return 0;
}
//<beatheart><probe_type>1</probe_type><probe_id>0800276D3191</probe_id><probe_ip>192.168.16.240</probe_ip><cpu>2</cpu><me
//m>81</mem><hd>32</hd><netcard><device>eth0</device><status>0</status><usage>0</usage><drop>0</drop></netcard><time>2013-
//4-23 16:21:23</time></beatheart>
//netcard=<device>eth0</device><status>0</status><usage>0</usage><drop>0</drop>
//<device>eth0</device><status>0</status><usage>0</usage><drop>0</drop>
//device=eth0
//<device>eth0</device><status>0</status><usage>0</usage><drop>0</drop>
//status=0
//<device>eth0</device><status>0</status><usage>0</usage><drop>0</drop>
//usage=0
//<device>eth0</device><status>0</status><usage>0</usage><drop>0</drop>
//drop=0

读书人网 >C语言

热点推荐