如何检查字符串是否以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 ;