Yinzhien
2021-07-15 05:12
采纳率: 90%
浏览 47

C语言如何判断输入字符串符合自定义要求?

我需要一个效验调用函数,
来效验输入的字符串是否符合自定义的要求
百度和CNSD 搜编了都没有具体的例子

如,我所定义的字符串的组成是第一个大写字母+后四位数
如:A1043或者B1054
即字符串只由大写字母与数字组成

  • 好问题 提建议
  • 收藏

4条回答 默认 最新

  • 砻谷踏碓 2021-07-15 09:20
    已采纳

    标准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("输入正确");
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 雨泽贾 2021-07-15 06:06

    字符串是由一个一个的字符组成,每个字符都有一个自己对应的ASCLL码值,比如说‘0’的ACSLL码值是48,‘A’的ACSLL码值是65,‘a’的是97,通过ACSLL码值对输入的字符串数组一个一个字符进行判断ACSLL码值对范围就可以知道输入的是否符合要求了。

    评论
    解决 无用
    打赏 举报
  • 永不写代码的 2021-07-15 08:13

    可以试试使用正则表达式来匹配

    评论
    解决 无用
    打赏 举报
  • qfl_sdu 2021-07-15 09:21
    #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;
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题