/*Rennex helped*/ #include #include #include #include #include "stdio.h" //strtok using namespace std; bool validateEmail(string); int main(){ string email; bool isValid; do{ cout<< " Enter email (or q/Q to quit): "; getline(cin, email); isValid= validateEmail(email); if(isValid) cout<< "\n\t Valid Email\n"; else cout<< "\n\tInvalid Email\n"; } while (email != "q" && email != "Q"); return 0; } bool validateEmail(string email){ //check name exists (first character is alphanumeric) //check last character valid (alphanumeric) if(!isalnum(email.at(0)) || !isalnum(email.at(email.size()-1))){ cout<<"\n\tINVALID NAME\n"; return false; } //check if @ used multiple times int atPos= 0; for(int ctr= 0; ctr != email.size(); ++ctr){ if(atPos != 0){ cout<< "\n\t'@' used multiple times"; return false; } } //split into sections vector vData; char str[321]; strcpy(str, email.c_str()); //convert to cstring char *pch; pch= strtok(str,"@."); //first part until delimiter vData.push_back(pch); while(pch != NULL){ //each successive delimiter pch= strtok (NULL, "@."); if(pch == NULL) break; vData.push_back(pch); } if(vData.size() <3){ //make sure at least 3 parts exist (name, domain, tld)...but can have more than 3 EX: subdomains cout << "\n\tNot enough sections (name@domain.tld)"; return false; } return true; }