如何提取想要的字符
我的邮件是lijundian001@yahoo.com
例如:person@yahoo.com
邮箱:szhys268@yahoo.com
2000年7月■leonfans_com@yahoo.com
uot;(cashbacher@yahoo.com
一个,ewql3000@yahoo.com
彩遇见你(lily0366green@yahoo.com
如何把以上的邮箱地址给提取出来啊
请各位大侠指点一下
高分相赠
[解决办法]
只是这样的话
char c[80] = "我的邮件是lijundian001@yahoo.com ";
int i=strlen(c)-1;
while ((c[i]> = 'a ' && c[i] <= 'z ')
|| (c[i]> = 'A ' && c[i] <= 'Z ')
|| (c[i]> = '0 ' && c[i] <= '9 ')
|| c[i]== '_ '
|| c[i]== '. '
|| c[i]== '@ ')
i--;
cout < <c+i+1 < <endl;
[解决办法]
#include <iostream>
using namespace std;
char *charCopy(int a,int b,char *p);
char **findMail(char a[])
{
int len;
int count=0;
int count2=0;
int count3=0;
len=strlen(a);
int Flag=0;
char *t[10];
for (int i=0;i <10;i++)
{
t[i]=new char[40];
t[i]=a;
}
while(count <len)
{
while(count <len)
{
if( '@ '==a[count])
{count2=count;count3=count;count++;break;}
count++;
}
if (count> =len)
break;
while(*a)
{
if((a[count2]> = '0 ' && a[count2] <= '9 ')||( a[count2]> = '@ ' && a[count2] <= 'Z ')||( a[count2]> = 'a ' &&a[count2] <= 'z ')||(a[count2]== '_ ')||(a[count2]== '. '))
{count2++;}
else
break;
}
while(count3> =0)
{
if((a[count3]> = '0 ' && a[count3] <= '9 ')||( a[count3]> = '@ ' && a[count3] <= 'Z ')||( a[count3]> = 'a ' &&a[count3] <= 'z ')||(a[count3]== '_ ')||(a[count3]== '. '))
{count3--;}
else
break;
}
t[Flag]=charCopy(count3+1,count2-1,a);//因为count3也读取了‘@ ',所以要加一。
Flag++;
}
return t;
}
char *charCopy(int a,int b,char *p)
{
int Flag=0;
char *t=new char[b-a+1];
while(Flag <b-a+1)
{
*(t+Flag)=*(p+a+Flag);
Flag++;
}
return t;
}
int main()
{
char kk[]={ "++gaozhenyu@sina.com++eggqq007@163.com "};
char **bb=findMail(kk);
for(int i=0;i <10;i++)
cout < <*(bb+i) < <endl;
return 0;
}
昨晚写了一下,但是cout不出来,但是可以在调试下看到结果正确。奇怪的是cout把*bb的值改了。LZ自己试一下。