2013-03-20 170 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 ; 
相关问题