我需要所有字符串启动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;
}
答案 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;
}
希望可以提供帮助