2014-09-26 27 views
-2

我需要啓動KAS的所有字符串。例如KAS,KASDGFT,KASddfdd等 但在我的情況下,它只是KAS。它沒有看KASGHFJHFT,但它從KAS開始。所以我需要它。我想在strcmp之後添加一個正則表達式,這意味着沒有什麼或者什麼東西在KAS之後像KAS *。但它不起作用;我該怎麼做?我需要C中的正則表達式來進行字符串比較

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; 
} 

回答

6

代替使用strcmp的,使用strncmp其中比較第一n個字符。

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

+0

明白了!謝謝你這麼muucchhh! – user6548945 2014-09-26 15:51:04

0

的標準C字符串函數都不支持正則表達式;您必須使用標準C庫之外的某些內容(例如GNU extensions)進行正則表達式匹配。

如果你只需要搜索字符串"KAS",不過,你可以使用strstr

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

不能同意任何更多與玉萍, 我嘗試寫函數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; 
} 

希望能有所幫助

+2

爲什麼不只是在strncmp中使用n? ;)像Vicky提出的那樣,if(strncmp(program,「KAS」,3)== 0){....} – 2014-09-26 17:09:57

+1

注意:'strncmp(str1,str2,0)'已定義好 - 返回0 ;. 'my_strncmp(str1,str2,0)'的功能類似於'strcmp(str1,str2)'。避免使用'unsigned'參數進行減法。 – chux 2014-09-26 17:16:40

+0

楚克斯的筆記真的很有幫助!看來,如果num爲0,我的 Thomas 2014-09-27 05:40:41

相關問題