我是C语言编程的新手,我正在尝试编写一个比较字符串的简单函数。我来自java,所以如果我犯了一些看似简单的错误,我会道歉。我有以下代码:
/* check if a query string ps (of length k) appears
in ts (of length n) as a substring
If so, return 1. Else return 0
*/
int
simple_substr_match(const unsigned char *ps, /* the query string */
int k, /* the length of the query string */
const unsigned char *ts, /* the document string (Y) */
int n /* the length of the document Y */)
{
int i;
for(i = 0;i < n;i+k){
char comp;
comp = ts->substring(i,k);
if (strncmp(comp, ps, k)) {
return 1;
}
}
return 0;
}
尝试编译时,我得到错误:请求成员'substring',而不是结构或联合。
代码的概念在代码注释中描述,但只是为了详细说明我正在寻找ps是否以k的增量(ps的长度)作为ts的子串出现。
我做错了什么,我该如何解决?有没有更好的方法来做我想做的事情?
答案 0 :(得分:2)
更改
for(i = 0;i < n;i+k){
char comp;
comp = ts->substring(i,k);
if (strncmp(comp, ps, k)) {
return 1;
}
}
到
for(i = 0;i < n-k;i++){
if (!strncmp(ts+i, ps, k)) {
return 1;
}
}
答案 1 :(得分:2)
ts是一个char *而不是一个类(你用C编写,而不是C ++)
如何使用标准的'strstr'C函数?
if (strstr(ts, ps) != NULL) {
return 1;
} else {
return 0;
}
答案 2 :(得分:0)
C没有成员函数。并且在c ++中char没有成员函数substring。
你应该使用ts
作为字符数组。
答案 3 :(得分:0)
这样的东西?
#define simple_substr_match(ps,ts) (strstr(ts,ps) != NULL)