Arrays C语言中的电话号码验证功能

Arrays C语言中的电话号码验证功能,arrays,c,string,character,Arrays,C,String,Character,我正在尝试创建一个程序的一部分,我需要在其中验证输入字符串是否为有效的电话号码 有效的电话号码可能包含以下数字和非数字字符:“+”、“-”、“(”、“)”。电话号码中至少应有一位数字(顺序和长度无关紧要)。因此,所有其他字符和字母都是无效的。我知道如何检查字符串中是否有单个字符/符号,但现在有26 x 2(小写和大写)+其他无效符号,我认为检查字符串中是否有这些单独的无效字符是不符合逻辑的 是否有一个C函数(可能不是一个函数,而是几个组合函数)可以适应这种情况?还是有别的办法 它将如何运行的示例

我正在尝试创建一个程序的一部分,我需要在其中验证输入字符串是否为有效的电话号码

有效的电话号码可能包含以下数字和非数字字符:“
+
”、“
-
”、“
”、“
”。电话号码中至少应有一位数字(顺序和长度无关紧要)。因此,所有其他字符和字母都是无效的。我知道如何检查字符串中是否有单个字符/符号,但现在有26 x 2(小写和大写)+其他无效符号,我认为检查字符串中是否有这些单独的无效字符是不符合逻辑的

是否有一个C函数(可能不是一个函数,而是几个组合函数)可以适应这种情况?还是有别的办法

它将如何运行的示例:

char aString[50];
scanf("%s", aString);
//checks if aString is valid or not
试试这个:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
  
int checkphone(char *s)
{
        char *i, *valid_chars = "01234567890+-()";
        int has_at_least_one_digit = 0;

        for(; *s && (i = strchr(valid_chars, *s)); s++)
                has_at_least_one_digit |= (i < valid_chars + 10);

        return (*s == '\0') && has_at_least_one_digit;
}
  
int main(int argc, char **argv)
{
        int i;
  
        for(i = 1; i < argc; i++)
                printf("Parameter '%s' %s a phone number.\n",
                        argv[i],
                        checkphone(argv[i]) ? "is" : "isn't");

        exit(0);
}


检查仅由某些字符组成的字符串的初始部分的长度,因此可以执行
len=strspn(aString,“0123456789()+-”;如果(len==strlen(aString))/*正常*
用于第一次基本检查。
中的函数(宏)可能有一些用处,但是
中一些更为深奥的函数更可能有帮助。
strcspn()
strspn()
strpbrk()
中的函数可能会有所帮助。最后,您将希望对字符施加一些顺序:
+
在开头(仅限),后跟一个数字<代码>(在
之前)
(但是如果
存在,那么
也存在)
);没有嵌套的括号<代码>(后接数字;
前接数字
-
分隔两个数字-等等。使用
i
作为
char*
(实际上,除了整数类型的某个变体外,几乎将其用作任何东西)是一种常规-没有错,但不寻常。使用
p
s
更为传统。
gcc -Wall -o t t.c && ./t +34-478-232-434 892754 343-34 potato +3+3+3 +++ +-+- -43
Parameter '+34-478-232-434' is a phone number.
Parameter '892754' is a phone number.
Parameter '343-34' is a phone number.
Parameter 'potato' isn't a phone number.
Parameter '+3+3+3' is a phone number.
Parameter '+++' isn't a phone number.
Parameter '+-+-' isn't a phone number.
Parameter '-43' is a phone number.