如何使用 strcmp_function
Posted
技术标签:
【中文标题】如何使用 strcmp_function【英文标题】:how can I use strcmp_function 【发布时间】:2013-06-22 14:15:18 【问题描述】:我编写了一个用于在文本中查找特定单词的函数,但我有一个问题,我使用了 strcmp_function 获取 const char 参数,而 a[] 不是 cons char。如何在这个程序中使用这个功能?(w 表示单词)
int comparision(const char sentence[ ],char *w)
int i, length=0, c=0, l=0;
int j,count=0;
char a[20]='0';
length= strlen(sentence);
l= strlen(w);
for (i=0; i<length; i++)
if (sentence[i] == ' '||sentence[i] == '\t'||sentence[i] == '\n')
for(j=0;j<l;j++)
a[j]=sentence[j+i+1];
a[j+1]='\0';
if( strcmp(a,w)==0)
count++;
return count;
【问题讨论】:
您的编译器错误究竟是什么?字符数组和字符指针在 C++ 中具有相同的签名。strcmp
是 C,而不是 C++。它支持向后兼容。但是,如果你有std::string
,为什么不使用字符串呢?它安全、基于 RAII(无新增/删除),并具有许多预定义的强大方法(包括 Coparison)。如果你使用字符串,你的代码就是一个简单的string1 == string2
。
【参考方案1】:
你为什么不尝试做类似的事情
int i = 0;
while (sentence[i] != '\0')
if (strncmp(&sentence[i], word, l) == 0)
count += 1;
i += l;
else
i += 1;
return (count);
你想有任何问题,因为你 strncmp 只是读取数组
【讨论】:
【参考方案2】:你有这个功能:
int comparision(const char sentence[ ],char *w)
在函数的参数列表中,使用类似数组的语法声明的参数实际上是一个指针。上述函数声明与
完全相同int comparision(const char *sentence,char *w)
即使它是一个数组,当用作表达式时,数组的名称与指向数组中第一个元素的指针相同——所以效果很好。
这意味着你可以这样做:
char str1[] = "Hello";
char *str2 = "Hello";
int equal = strcmp(str1, str2) == 0;
当将 str1 传递给 strcmp 时,据说 str1 衰减为一个指针,所以它是 和做的一模一样
int equal = strcmp(&str1[0], str2) == 0;
&str[0]
是指向str1中第一个元素的指针,类型为char *
即您对 strcmp 的使用很好。 这应该回答你的问题 - 你也提到你有一个问题,但不是问题是什么或你打算做什么,所以....
【讨论】:
不过你用的语法不好。以上是关于如何使用 strcmp_function的主要内容,如果未能解决你的问题,请参考以下文章
如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]