Проверить является ли строка формата address@site.com - C (СИ)

Узнай цену своей работы

Формулировка задачи:

помогите написать программу ,которая получает строки ,отделенные пробелами ,в качестве параметров командной строки. проверить является ли строка формата removed@mail.ru

Решение задачи: «Проверить является ли строка формата address@site.com»

textual
Листинг программы
#include <stdio.h>
 
typedef char shortstr_t[256];
 
int is_email(const char * str) {
    shortstr_t name, host, domain;
    return sscanf(str, "%255[^@]%*c%255[^.]%*c%255s", name, host, domain) == 3;
}
 
int main(int argc, char ** argv) {
    while ( *(++argv) )
        printf("%s is %svalid email\n", *argv, ( is_email(*argv) ) ? "" : "NOT ");
    return 0;
}

Объяснение кода листинга программы

В данном коде:

  1. Создается структура типа shortstr_t, которая представляет собой массив символов фиксированной длины (256).
  2. Определяется функция is_email, которая принимает строку формата const char * str и проверяет, соответствует ли она формату электронной почты. Для этого используется функция sscanf, которая пытается считать из строки три поля: имя пользователя, хост и домен. Если все три поля успешно считаны, функция возвращает 1, иначе возвращает 0.
  3. В функции main происходит следующий цикл: для каждого аргумента командной строки выводится сообщение о том, является ли он действительным адресом электронной почты. Список переменных и их значений:
  4. name, host, domain - массивы символов, которые используются для разбиения строки на поля при проверке адреса электронной почты.
  5. argv - указатель на массив аргументов командной строки.
  6. *argv - текущий аргумент командной строки.
  7. printf - функция вывода информации на экран.
  8. is_email - функция, проверяющая адрес электронной почты.
  9. sscanf - функция для чтения данных из строки по формату.
  10. 1 - возвращаемое значение функции is_email, если адрес электронной почты действителен.
  11. 0 - возвращаемое значение функции is_email, если адрес электронной почты недействителен.
  12. **argv - текущий аргумент командной строки, преобразованный в указатель на указатель.
  13. ``` - символ, используемый для формирования строки в функцииprintf`.
  14. *argv - текущий аргумент командной строки.
  15. printf - функция вывода информации на экран.
  16. 0 - значение, которое возвращает функция printf, если происходит ошибка при попытке вывода на экран.
  17. 1 - значение, которое возвращает функция printf, если происходит успешный вывод на экран.
  18. NOT - строка, которая добавляется к сообщению об ошибке при выводе на экран.
  19. 0 - значение, которое возвращает функция main, если все аргументы являются действительными адресами электронной почты.
  20. return - оператор, который завершает выполнение функции и передает управление обратно вызывающей функции.
  21. 0 - значение, которое возвращает функция main, если хотя бы один из аргументов не является действительным адресом электронной почты.
  22. main - функция, в которой происходит основная логика программы.
  23. 1 - значение, которое возвращает функция main, если произошла ошибка при выполнении программы.
  24. 0 - значение, которое возвращает функция main, если программа выполнена успешно.

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы