我需要一个效验调用函数,
来效验输入的字符串是否符合自定义的要求
百度和CNSD 搜编了都没有具体的例子
如,我所定义的字符串的组成是第一个大写字母+后四位数
如:A1043或者B1054
即字符串只由大写字母与数字组成
标准c或c++并不支持正则,除非导入第三方库
其实题主的问题用c解决并不难,思路大概如下
不同的校验规则写不同function
byte IsCapNums(char str[]){
int l=strlen(str);
if(l<2) return 0;
if(str[0]<'A'||str[i]>'Z') return 0;
for(int i=1;i<l;<i++) if(str[i]<'0'||str[i]>'9') return 0;
return 1;
}
char str[];
scanf_s("%s",str);
byte r=IsCapNums(str);
if(r==0) printf_s("输入不正确");else printf_s("输入正确");
字符串是由一个一个的字符组成,每个字符都有一个自己对应的ASCLL码值,比如说‘0’的ACSLL码值是48,‘A’的ACSLL码值是65,‘a’的是97,通过ACSLL码值对输入的字符串数组一个一个字符进行判断ACSLL码值对范围就可以知道输入的是否符合要求了。
可以试试使用正则表达式来匹配
#include <stdio.h>
#include <string.h>
//按照你要求的第一个大写字母+后四位数
int isValid(char* buf)
{
int i;
if(strlen(buf) != 5) //长度不匹配,直接退出
{
printf("长度不符合\n");
return 0;//
}
if(buf[0] <'A' || buf[0] > 'Z')
{
printf("第一个字符不是大写字母\n");
return 0; //第一个字符不是大写字母,退出
}
for(i=1;i<5;i++)
if(buf[i] < '0' || buf[i] > '9')
{
printf("第2-5位中有非数字字符\n");
return 0;
}
//上面的条件都满足,则说明输入符合要求
printf("输入符合要求\n");
return 1;
}
int main()
{
char buf[100]={0};
gets(buf); //读取字符串
if(isValid(buf))
//输入合法时的处理
else
//输入不合法的处理
return 0;
}