用C语言实现邮箱地址合法性校验 输入一个电子邮箱地址字符串,要求检查这个邮箱地址是否合法。如果输入的电子邮箱地址是合法的, 输出字符串"true"; 如果不合法输出字符"false"。 满足如下条件被认为是合法的邮箱地址: 1、仅包含一个"@"字符 2、最后三个字符必须是".com" 3、字符之间没有空格 4、有效字符为1~9、a~z、A~Z、"."、"@"、"_"
时间: 2024-01-24 11:17:28 浏览: 123
C#判断是否为合法的email地址
以下是用C语言实现邮箱地址合法性校验的代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
bool check_email(char* email) {
int at_count = 0, com_count = 0;
int len = strlen(email);
if (len < 7) { // 邮箱地址长度至少为7
return false;
}
if (email[len-4]!='.' || email[len-3]!='c' || email[len-2]!='o' || email[len-1]!='m') { // 最后三个字符必须是".com"
return false;
}
for (int i=0; i<len; i++) {
char c = email[i];
if (c >= 'A' && c <= 'Z') { // 将大写字母转换为小写字母
c = c + 32;
}
if (c == '@') {
at_count++;
if (i == 0 || i == len-1 || at_count > 1) { // "@"不能在首尾,且仅出现一次
return false;
}
} else if (c == '.') {
if (i == 0 || i == len-1 || email[i-1]=='@' || email[i+1]=='@' || com_count > 0) { // "."不能在首尾、不能紧跟着"@"、且仅出现一次
return false;
}
com_count++;
} else if (c != '_' && (c < '0' || (c > '9' && c < 'a') || c > 'z')) { // 非法字符
return false;
}
}
if (com_count == 0) { // 必须包含一个"."
return false;
}
return true;
}
int main() {
char email[100];
printf("请输入电子邮箱地址:");
scanf("%s", email);
if (check_email(email)) {
printf("true\n");
} else {
printf("false\n");
}
return 0;
}
```
该程序首先判断邮件地址长度是否合法,然后检查最后三个字符是否为".com"。接下来遍历字符串,统计"@"和"."的个数,并进行各种限制条件的判断。最后判断是否包含一个"."即可。
阅读全文