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

现在有个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;