我是否需要在C中使用正则表达式进行此字符串比较

时间:2014-09-26 15:39:50

标签: c regex

我需要所有字符串启动KAS。例如KAS,KASDGFT,KASddfdd等。 但就我而言,这只是KAS。它没有看KASGHFJHFT,但它始于KAS。所以我需要它。我想在strcmp中添加一个正则表达式,这意味着像KAS之类的KAS之后没有任何东西。但它不起作用;我该怎么办?

int function (double a, int b, char *program)
{
   if (strcmp(program,"KAS")==0){
       if (cgpa >= 2 && courses_complete >= 5) {
          return 1;
       }
   } else if (cgpa >= 3 && courses_complete >= 8) {
       return 1;
   } 
   return 0;  
}

3 个答案:

答案 0 :(得分:6)

使用比较前n个字符的strcmp而不是strncmp

例如,if (strncmp(program,"KAS",3)==0)

答案 1 :(得分:0)

标准C字符串函数都不支持正则表达式;您必须使用标准C库之外的内容(例如GNU extensions)进行正则表达式匹配。

但是,如果您只需要搜索子字符串"KAS",则可以使用strstr

if ( strstr( program, "KAS" ) )
{
  // program contains substring "KAS"
}

答案 2 :(得分:-1)

与Vicky不能达成一致, 我尝试编写函数strncmp

int my_strncmp(const char* str1, const char* str2, unsigned int num)
{
    unsigned int i = 0;
    for( ; (*str1==*str2)&&(*str1!='\0')&&(i<num-1); str1++, str2++, i++)
        ;
    return *str1-*str2;
}
希望可以提供帮助