分享
 
 
 

从文件里得到所有的邮件地址(源代码)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

很想实现类似 php函数里的 ereg 功能.欢迎探讨

/*

* 从文件里得到邮件地址 2003-2-8 17:15

*/

#include <stdlib.h>

#include <stdio.h>

#define mailMaxLen 20

#define bufMaxLen 200

long filesize(FILE *stream)

{

long curpos, length;

curpos = ftell(stream);

fseek(stream, 0L, SEEK_END);

length = ftell(stream);

fseek(stream, curpos, SEEK_SET);

return length;

}

int main(int argc,char *argv[])

{

FILE *fp,*fp_write;

int i,temp_len;

int bool_find=0,bool_finished=0;

long file_len=0;

char fileName[30],write_file[30];

char mail_data[50]; //保存得到的临时邮件

char *buf;

char *p,*mail_begin,*temp_p;

if(argc!=2)

{ printf("error!\nExp: %s yourmail.dat\n",argv[0]);

return 0;

}

sprintf(write_file, "tmp_%s", argv[1]); //生成要写入的文件名

strcpy(fileName, argv[1]);

if((fp=fopen(fileName,"rb"))==NULL)

{ printf("\nCan't open The file for %s to read! \n",fileName);

printf("Press any key to halt!");

return(0);

}

if((fp_write=fopen(write_file,"w"))==NULL)

{ printf("\nCan't open The file for %s to write! \n",fp_write);

printf("Press any key to halt!");

return(0);

}

file_len=filesize(fp);

buf=(char *)malloc(file_len);

fread(buf,file_len,1, fp);

for(p=buf;*p!='\0';p++)

{

// if(*p=='_' || *p=='.' || (*p>='0' && *p<='9') || (*p>='a' && *p<='z') || (*p>='A' && *p<='Z') )

if(*p=='@')

{

bool_finished=0;

bool_find=0;

mail_begin=p;

temp_len=0;

while(temp_len<mailMaxLen && p!=buf)//后退,找到邮箱名

{

p--;

//如果符合标准的

if(*p=='_' || *p=='-' || *p=='.' || (*p>='0' && *p<='9') || (*p>='a' && *p<='z') || (*p>='A' && *p<='Z'))

{

temp_len++;

}

else

{

break;

}

}

p++;//指向正确的开始

//eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))

if(mail_begin!=p) //符合条件了

{

temp_p=mail_begin; //这时temp_p 指向@处

mail_begin=p; //记录邮件名开始地址

p=++temp_p; //p指向@后的第一个字符

// printf("%s %c","ok",*temp_p);

//接下来的第1个字符应该是a-z 0-9 之间

while((*p>='0' && *p<='9') || (*p>='a' && *p<='z') || (*p>='A' && *p<='Z') && *p!='\0')

{

p++;

//紧接着应该是a-z -

if(*p=='-' || (*p>='0' && *p<='9') || (*p>='a' && *p<='z') || (*p>='A' && *p<='Z'))

{ p++;

}

else

{ bool_find=0;

break;

}

temp_len=0; //cd.digital@cfan.com.cn

while(temp_len<mailMaxLen && *p!='\0')

{ if(*p=='-' || (*p>='0' && *p<='9') || (*p>='a' && *p<='z') || (*p>='A' && *p<='Z'))

{ p++;

temp_len++;

}//

else if(*p=='.')//找到点.了 +[a-z]{2,3}$

{ bool_find++;//找到一段了

temp_p=p; //temp_p 指向.所在的位置

p++;

break;

}

else

{ bool_finished=1; //退出循环

break;

}

}//while(temp_len<mailMaxLen && *p!='\0')

if(bool_finished==1 && bool_find==0)//不符合

break;

}//while

}// if(mail_begin!=p) //符合条件了

// ggg@chinatoolsnet.cnggg _w@163.net

if(bool_find>0)

{

p=temp_p; //p退到最后一个.的位置

p=p+3;

if(!((*p>='a' && *p<='z') || (*p>='A' && *p<='Z'))) //最后的 .net 不符合

{ p--;

}

/*

for(temp_p=mail_begin;temp_p<=p;temp_p++)

{ printf("%c",*temp_p);

}

*/

// strncpy(mail_data, mail_begin, 3);

fwrite(mail_begin, p-mail_begin+1, 1, fp_write);

fputc('\n',fp_write);

// printf("%c",'\n');

*p=' '; //这样做是为了下次检查时从此开始

}

}// if(*p=='@')

// printf("%c",*p);

}//for

fclose(fp);

fclose(fp_write);

free(buf);

printf("\n--------------------\nok!");

printf("\nfile writed to '%s'!",write_file);

return(0);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有