2013-03-20 219 views
5

例如,驗證有效的URL,我想做到以下幾點如何檢查字符串是否以C中的某個字符串開頭?

char usUrl[MAX] = "http://www.stackoverflow" 

if(usUrl[0] == 'h' 
    && usUrl[1] == 't' 
    && usUrl[2] == 't' 
    && usUrl[3] == 'p' 
    && usUrl[4] == ':' 
    && usUrl[5] == '/' 
    && usUrl[6] == '/') { // what should be in this something? 
    printf("The Url starts with http:// \n"); 
} 

或者說,我已經想過使用strcmp(str, str2) == 0,但是這必須是非常複雜的。

有沒有一個標準的C函數來做這樣的事情?

+2

請嘗試'strncmp'。 – congusbongus 2013-03-20 04:07:32

+0

可能在C中使用類似'\ startsWith(str \ _a,str \ _b)\'的東西的重複](http://stackoverflow.com/questions/4770985/something-like-startswithstr-a-str-b- in-c) – 2015-06-09 20:20:57

回答

0

strstr(str1, "http://www.stackoverflow")是可用於此目的的另一個功能。

6

我建議這樣的:

char *checker = NULL; 

checker = strstr(usUrl, "http://"); 
if(checker == usUrl) 
{ 
    //you found the match 

} 

只有當字符串'http://'開始,而不是像'XXXhttp://'

您還可以使用strcasestr,如果這是你提供的平臺上這將匹配。

25
bool StartsWith(const char *a, const char *b) 
{ 
    if(strncmp(a, b, strlen(b)) == 0) return 1; 
    return 0; 
} 

... 

if(StartsWith("http://stackoverflow.com", "http://")) { 
    // do something 
}else { 
    // do something else 
} 

您還需要#include<stdbool.h>或只是int

+0

這個問題有太多不正確的答案。這是一個正常工作的。 – PoVa 2017-10-03 06:00:17

0

更換bool下應檢查是否usUrl以 「http://」:開始

strstr(usUrl, "http://") == usUrl ; 
相關問題