Проверить является ли строка формата 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; }
Объяснение кода листинга программы
В данном коде:
- Создается структура типа
shortstr_t
, которая представляет собой массив символов фиксированной длины (256
). - Определяется функция
is_email
, которая принимает строку форматаconst char * str
и проверяет, соответствует ли она формату электронной почты. Для этого используется функцияsscanf
, которая пытается считать из строки три поля: имя пользователя, хост и домен. Если все три поля успешно считаны, функция возвращает1
, иначе возвращает0
. - В функции
main
происходит следующий цикл: для каждого аргумента командной строки выводится сообщение о том, является ли он действительным адресом электронной почты. Список переменных и их значений: name
,host
,domain
- массивы символов, которые используются для разбиения строки на поля при проверке адреса электронной почты.argv
- указатель на массив аргументов командной строки.*argv
- текущий аргумент командной строки.printf
- функция вывода информации на экран.is_email
- функция, проверяющая адрес электронной почты.sscanf
- функция для чтения данных из строки по формату.1
- возвращаемое значение функцииis_email
, если адрес электронной почты действителен.0
- возвращаемое значение функцииis_email
, если адрес электронной почты недействителен.**argv
- текущий аргумент командной строки, преобразованный в указатель на указатель.``` - символ, используемый для формирования строки в функции
printf`.*argv
- текущий аргумент командной строки.printf
- функция вывода информации на экран.0
- значение, которое возвращает функцияprintf
, если происходит ошибка при попытке вывода на экран.1
- значение, которое возвращает функцияprintf
, если происходит успешный вывод на экран.NOT
- строка, которая добавляется к сообщению об ошибке при выводе на экран.0
- значение, которое возвращает функцияmain
, если все аргументы являются действительными адресами электронной почты.return
- оператор, который завершает выполнение функции и передает управление обратно вызывающей функции.0
- значение, которое возвращает функцияmain
, если хотя бы один из аргументов не является действительным адресом электронной почты.main
- функция, в которой происходит основная логика программы.1
- значение, которое возвращает функцияmain
, если произошла ошибка при выполнении программы.0
- значение, которое возвращает функцияmain
, если программа выполнена успешно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д