2013-08-29 36 views
0

我有一小段C代碼從提供的字符串中提取電子郵件域,然後在其上進行主機查找。這看起來相當簡單,而且很有效。不過,這可以進一步簡化,或者做得更好嗎?感謝您的觀看。驗證電子郵件域的更好方法?

struct hostent *host; 
int at = 0, ei = 0; 
char email_host[MAX_HOSTNAME_LEN]; 
for (at = 0; at < strlen(argument); at++) 
{ 
    if (argument[at] == '@') 
    { 
     strcpy(&email_host[ei],&argument[at+1]); 
     ei++; 
    } 
} 
host = gethostbyname(email_host); 
if (!host ) 
    fail = TRUE; 
+0

你幾乎重新實現什麼'的strstr()'不,我會使用:HTTP:/ /www.cplusplus.com/reference/cstring/strstr/ –

+4

您需要查找MX記錄,而不是域部分的常規A記錄。許多域名不會使用該域名的根名稱來建立主機,或者,如果它存在,它可能根本沒有裝備來處理SMTP。 – tripleee

+1

@Scotty:你的意思是'strchr',對吧? OP正在尋找單個角色的位置。 – usr2564301

回答

0

這可以簡化爲:

if (argument[at] == '@') 
{ 
    strcpy(&email_host[ei],&argument[at+1]); 
    ei++; 
} 

簡單:

if (argument[at] == '@') 
{ 
    strcpy(email_host,&argument[at+1]); 
}