Проверка электронной почты в C ++

Итак, я пытаюсь создать программу, которая позволяет пользователю вводить свою электронную почту. Их электронная почта будет считаться действительной, если выполнены два условия: A. где-то там должен быть знак «@», а B. после «@» должен быть период. Я получил код по большей части, но у меня возникли некоторые трудности, когда дело доходит до проверки писем, у которых есть точка перед знаком «@». Если у них есть период перед знаком «@», они считаются действительными, но это не должно быть. Например, вводtext.example@randomcom считается действительным

Может ли кто-нибудь помочь мне понять, что я сделал не так? Заранее спасибо!

#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;

int main()
{
    int x = 25; //random size enough to hold contents of array plus one for               null terminator
    char input[x]; //array to hold input
    int sizeOf; //holds length of input array
    char* ptr = nullptr; //pointer
    char* ptr2 = nullptr; //pointer

    cout << "Enter your email address\n";
    cin.getline(input,x);
    sizeOf = strlen(input);

    for(int i = 0; i < sizeOf; i++)
    {
        ptr= strstr(input, "@"); //searches input array for "@" string
        if(ptr != nullptr) 
        {
            break;
        }
    }

    for(int i = 0; i < sizeOf; i++)
    {
        ptr2 = strstr(input, "."); //searches input array for "." string
        if(ptr2 != nullptr && &ptr2 > &ptr)
        {
            break;
        }
    }

    if(ptr != nullptr) //validates input of "@" sign
    {
        if(ptr2 != 0 && &ptr2 < &ptr) 
            {
                cout << "Email accepted.\n";
            }

        else
            {
                cout << "Missing . symbol after @\n";
            }
    }

    else
    {
        cout << "Missing @ symbol\n";
    }



return 0;
}

Ответы на вопрос(8)

Ваш ответ на вопрос