user-0 提问: 如何用C编写 把文本中的网址提取出来！

回复:
user: user-1
content: 撸主加油，字符串解析啥的最能提高编程水平了

user: user-2
content: 用C来干这活就是蛋疼，用perl或python吧。

user: user-3
content: 引用 23 楼 WizardOz 的回复:快使用正则式  哼哼哈嘿

user: user-4
content: 快使用正则式

user: user-0
content: 引用 31 楼 derekrose 的回复:赵老师闲的蛋疼赵老师？

user: user-5
content: 赵老师闲的蛋疼

user: user-0
content: 这是本网址的图片链接

user: user-0
content: 引用 17 楼 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; }恩，我把你的代码加以改进！现在已经能查询出图片的网址，但是现在差最后一步如何下载指定链接的图片！

user: user-6
content: 引用 26 楼 clever101 的回复:用C来干这活就是蛋疼，用perl或python吧。 试对比5楼代码和perl或python对一个包含长度大于1000000000000000000000个字节的url的提取效果。

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复:纠正楼上代码： #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,"\"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; } 但是我的文本文件时网站的源码，里面有很多的网址，我只想把<img>图片网址提取出来，你这种方法只是简单的sscanf操作吧！

user: user-6
content: 纠正楼上代码： #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,"\"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; }

user: user-6
content: 没实际编译链接调试，不保证对。仅供参考： #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;         r=sscanf(p,"\"http://%[^\"]\"%n",url,&n);         if (1==r) {             p+=n;             printf("http://%s\n",url);         } else (0==r) {             p++;         } else break;     }     fclose(f);     return 0; }

user: user-0
content: lairena

user: user-0

user: user-0
content: 在线等！

user: user-6
content: 引用 21 楼 zhou3391817 的回复:[quote=引用 20 楼 zhao4zhong1 的回复:] [quote=引用 15 楼 qq120848369 的回复:] 正则最通用哈，你有dom解析库也可以哈。 提醒：在string parse问题域中，正则表达式不是万能的；而有限状态自动机是万能的。[/quote] 有限状态自动机 是什么 ？[/quote] 参考《编译原理》中的词法分析和有限状态自动机。

user: user-7
content: 引用 20 楼 zhao4zhong1 的回复:[quote=引用 15 楼 qq120848369 的回复:] 正则最通用哈，你有dom解析库也可以哈。 提醒：在string parse问题域中，正则表达式不是万能的；而有限状态自动机是万能的。[/quote] 有限状态自动机 是什么 ？

user: user-6
content: 引用 15 楼 qq120848369 的回复:正则最通用哈，你有dom解析库也可以哈。 提醒：在string parse问题域中，正则表达式不是万能的；而有限状态自动机是万能的。

user: user-3
content: 至于重复的，自己想办法吧过滤吧

user: user-3