访问C中指针引用的数组

访问C中指针引用的数组,c,arrays,pointers,C,Arrays,Pointers,我是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,

我是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;
}
/*检查是否显示查询字符串ps(长度为k)
以ts(长度为n)作为子串
如果是,请返回1。否则返回0
*/
int
简单子匹配(const unsigned char*ps,/*查询字符串*/
int k,/*查询字符串的长度*/
常量无符号字符*ts,/*文档字符串(Y)*/
int n/*文档的长度Y*/)
{
int i;
对于(i=0;i子串(i,k);
if(strncmp(comp,ps,k)){
返回1;
}
}
返回0;
}
当试图编译时,我得到了一个错误:在非结构或联合中请求成员“substring”

代码注释中描述了代码的思想,但为了详细说明,我想看看ps是否以k(ps的长度)的增量作为ts的子串出现

我做错了什么?我该如何修复它?有没有更好的方法来做我想做的事情?

改变

for(i = 0;i < n;i+k){
    char comp;
    comp = ts->substring(i,k);
    if (strncmp(comp, ps, k)) {
    return 1;
    }
}
(i=0;i{ 碳化合物; comp=ts->子串(i,k); if(strncmp(comp,ps,k)){ 返回1; } }

(i=0;i{ 如果(!strncmp(ts+i,ps,k)){ 返回1; } } 更改

for(i = 0;i < n;i+k){
    char comp;
    comp = ts->substring(i,k);
    if (strncmp(comp, ps, k)) {
    return 1;
    }
}
(i=0;i{ 碳化合物; comp=ts->子串(i,k); if(strncmp(comp,ps,k)){ 返回1; } }

(i=0;i{ 如果(!strncmp(ts+i,ps,k)){ 返回1; } }
C没有成员函数。并且C++中的char没有成员函数子串。
您应该使用
ts
作为字符数组。

C没有成员函数。并且C++中的char没有成员函数子串。 您应该使用
ts
作为字符数组。

ts是一个字符*而不是一个类(而且您是用C编写的,不是C++)

使用标准的'strstr'C函数怎么样

if (strstr(ts, ps) != NULL) {
  return 1;
} else {
  return 0;
}
ts是一个char*而不是一个类(而且您是用C编写的,不是C++)

使用标准的'strstr'C函数怎么样

if (strstr(ts, ps) != NULL) {
  return 1;
} else {
  return 0;
}
像这样的

#define simple_substr_match(ps,ts) (strstr(ts,ps) != NULL)
像这样的

#define simple_substr_match(ps,ts) (strstr(ts,ps) != NULL)

C!=C++。C没有
substring
方法。这是什么语言?不需要对imo进行否决。是的,代码是错误的,发现错误不是火箭科学,但他说他是新的,他尝试了,提供了一个代码示例,并发布了错误消息。我来自java,所以如果我犯了看似简单的错误,我道歉。我正在尝试从java转换到c.c!=C++。C没有
substring
方法。这是什么语言?不需要对imo进行否决。是的,代码是错误的,发现错误不是火箭科学,但他说他是新的,他尝试了,提供了一个代码示例,并发布了错误消息。我来自java,所以如果我犯了看似简单的错误,我道歉。我正在尝试从java转换到c。感谢您的帮助,这消除了我得到的错误,但代码与我想要的不一样。我正在尝试将ps作为ts的子字符串,以ts的k为增量。我如何修改此代码以获得该结果?感谢您的帮助,这消除了我得到的错误,但代码与我想要的不一样。我试图将ps作为ts的子字符串,以ts的k增量进行查找。如何修改此代码以获得该结果?