如何检查字符串是否以C中的某个字符串开头?

例如,要validation有效的Url,我想执行以下操作

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函数可以做这样的事情?

 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或者只需用#include替换bool

我建议这样:

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

这只会在字符串以'http://'开头而不是'XXXhttp://'

如果您的平台上有可用的strcasestr ,也可以使用它。

strstr(str1, "http://www.stackoverflow")是另一个可用于此目的的函数。

以下应检查usUrl是否以“http://”开头:

 strstr(usUrl, "http://") == usUrl ;