如何检查字符串是否以C中的某个字符串开头?
问题描述:
例如,验证有效的URL,我想做到以下几点如何检查字符串是否以C中的某个字符串开头?
char usUrl[MAX] = "http://www.*"
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函数来做这样的事情?
答
strstr(str1, "http://www.*")
是可用于此目的的另一个功能。
答
我建议这样的:
char *checker = NULL;
checker = strstr(usUrl, "http://");
if(checker == usUrl)
{
//you found the match
}
只有当字符串'http://'
开始,而不是像'XXXhttp://'
您还可以使用strcasestr
,如果这是你提供的平台上这将匹配。
答
bool StartsWith(const char *a, const char *b)
{
if(strncmp(a, b, strlen(b)) == 0) return 1;
return 0;
}
...
if(StartsWith("http://*.com", "http://")) {
// do something
}else {
// do something else
}
您还需要#include<stdbool.h>
或只是int
+0
这个问题有太多不正确的答案。这是一个正常工作的。 – PoVa 2017-10-03 06:00:17
答
更换bool
下应检查是否usUrl以 “http://”:开始
strstr(usUrl, "http://") == usUrl ;
请尝试'strncmp'。 – congusbongus 2013-03-20 04:07:32
可能在C中使用类似'\ startsWith(str \ _a,str \ _b)\'的东西的重复](http://*.com/questions/4770985/something-like-startswithstr-a-str-b- in-c) – 2015-06-09 20:20:57