from http://bbs.csdn.net/topics/390765407
beiye90 发表于: 2014-04-21 11:11:01
提取网址
<img src="//www.baidu.com/img/bdlogo.gif" width="270" height="129">
例如这面的网址链接!
inhibitory 回复于: 2014-04-21 15:35:38
文本处理这种需求,还是用Perl,Java,C#做比较合适,它们原生对正则表达式支持
zhao4zhong1 回复于: 2014-04-21 14:26:02
#incldue <stdio.h>
#incldue <string.h>
FILE *f;
char ln[10000];
char url[4096];
char *p;
int r,n;
int main() {
f=fopen("in.txt","r");
if (NULL==f) {
printf("Can not open file in.txt!\n");
return 1;
}
while (1) {
if (NULL==fgets(ln,10000,f)) break;
p=ln;
while (1) {
r=sscanf(p,"<img src=\"http://%4095[^\"]\"%n",url,&n);
if (1==r) {
p+=n;
printf("http://%s\n",url);
} else (0==r) {
p++;
} else break;
}
}
fclose(f);
return 0;
}
gz_qmc
纯C
void GetImageAddress(char *FileName)
{
FILE *fp;
char sflag[11]="<img src=\""; //特征码
char dflag[11]={0};
bool same=false;
char buf[1024];
char ch;
int i;
fp=fopen(FileName,"rb");
if(NULL==fp) return;
while(1)
{
dflag[9]=fgetc(fp);
if(feof(fp)) break;
same=true;
for(i=0;i<10;i++)
same&=(sflag[i]==dflag[i]);
same&=(sflag[9]==dflag[9]);
if(same)
{
memset(dflag,0,10);
memset(buf,0,1024);
i=0;
while(1)
{
ch=fgetc(fp);
if(feof(fp))
{
fclose(fp);
return;
}
if(ch=='\"') break;
buf[i]=ch;
i++;
}
printf("%s\n",buf);
}
else
{
for(i=0;i<9;i++)
dflag[i]=dflag[i+1];
}
}
fclose(fp);
}
应用举例
int main()
{
GetImageAddress("E:\\A.HTM");
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。