從檔案裡得到所有的郵件地址(原始碼) (轉)
很想實現類似 裡的 ereg 功能.歡迎探討
/*
* 從裡得到地址 -2-8 17:15
*/
#include
#include
#define MaxLen 20
#define bufMaxLen 200
long filesize(FILE *stream)
{
long curpos, length;
curp= 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.datn",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!='';p++)
{
// if(*p=='_' || *p=='.' || (*p>='0' && *p<='9') || (*p>='a' && *p<='z') || (*p>='A' && *p<='Z') )
if()
{
bool_finished=0;
bool_find=0;
mail_begin=p;
temp_len=0;
while(temp_len
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}$",$))
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!='')
{
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;
while(temp_len
{ 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
break;
}//while
}// if(mail_begin!=p) //符合條件了
// .cnggg">ggg@chinatoolsnet.cnggg
if(bool_find>0)
{
p=temp_p; //p退到最後一個.的位置
p=p+3;
if(!((*p>='a' && *p<='z') || (*p>='A' && *p<='Z'))) //最後的 不符合
{ 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()
// printf("%c",*p);
}//for
fclose(fp);
fclose(fp_write);
free(buf);
printf("n--------------------nok!");
printf("nfile writed to '%s'!",write_file);
return(0);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從 ifconfig 中得到 IP地址(轉)
- 郵件傳送庫原始碼原始碼
- 自制Pop3郵件接收系統(二):利用TcpClient得到Pop3的郵件列表資料 (轉)TCPclient
- C# - MailSender 郵件傳送元件原始碼 (支援ESMTP, 附件) (轉)C#AI元件原始碼
- linux mail利用外部郵箱地址發郵件LinuxAI
- java抓取網頁的郵件地址Java網頁
- 得到檔案大小
- win10 如何找到郵件顯示配置檔案 window10怎麼檢視郵件配置檔案Win10
- 蘋果iOS系統原始碼思考:物件的引用計數儲存在哪裡?--從runtime原始碼得到的啟示蘋果iOS原始碼物件
- vb中從域名得到IP及從IP得到域名 (轉)
- C# 傳送電子郵件原始碼片段C#原始碼
- XML檔案原始碼察看器(三) (轉)XML原始碼
- XML檔案原始碼察看器(四) (轉)XML原始碼
- XML檔案原始碼察看器(七) (轉)XML原始碼
- XML檔案原始碼察看器(二) (轉)XML原始碼
- XML檔案原始碼察看器(五) (轉)XML原始碼
- XML檔案原始碼察看器(六) (轉)XML原始碼
- 微信檔案如何快速轉至郵箱?微信檔案如何快速轉至郵箱教程
- 蘋果Mac上的郵件如何刪除不需要的電子郵件地址?蘋果Mac
- ThunderBird對只有回覆地址的郵件過濾
- 工作場所中的網路郵件 另一個安全威脅(轉)
- SpringBoot傳送電子郵件(附原始碼)Spring Boot原始碼
- 我所有的專案,原始碼全在這了!原始碼
- iOS標頭檔案中如何在巨集裡引用已有的巨集iOS
- 設定手機郵件下載檔案路徑
- 28、java檔案上傳下載、郵件收發Java
- 郵件傳送案例流的形式檔案不落盤
- Java 爬蟲(獲取指定頁面中所有的郵箱地址)Java爬蟲
- 遠端控制篇:透過機器名得到IP地址 透過IP地址得到機器名 (轉)
- 轉發郵件附件丟了
- javamail傳送郵件(轉)JavaAI
- 如何從 dump 檔案中提取出 C# 原始碼?C#原始碼
- NSN 內部推薦 -- 不能從電子郵件地址認證身份和來源.
- 電子郵件地址註冊過程詳解
- MVC驗證12-使用DataAnnotationsExtensions對整型、郵件、最小值、檔案型別、Url地址等驗證MVC型別
- 在蘋果電腦的Mac郵件上阻止和取消阻止電子郵件地址的方法蘋果Mac
- 成品直播原始碼推薦,java 實現郵件服務原始碼Java
- 禁用Crontab傳送郵件和使用inode刪除檔案