访问C中指针引用的数组
我是C语言编程新手,正在尝试编写一个比较字符串的简单函数。我来自java,所以如果我犯了看似简单的错误,我道歉。我有以下代码:访问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,
/* 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增量进行查找。如何修改此代码以获得该结果?