如何使用strcmp_function

how can I use strcmp_function

本文关键字:function strcmp 何使用      更新时间:2023-10-16

我写了一个函数来查找文本中的特定单词,但我遇到了一个问题,我使用strcmp_function来获取const char参数,而[]不是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]='';
if( strcmp(a,w)==0)
    count++;
    }}
return count;
}

为什么不尝试做一些类似的事情

   int i = 0;
   while (sentence[i] != '')
    {
      if (strncmp(&sentence[i], word, l) == 0)
         {
            count += 1;
            i += l;
         }
      else
          i += 1;
    }
    return (count);

您希望有任何问题,因为strncmp只读取数组

您有这个功能:

  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。这应该回答你的问题——你也提到你有问题,但没有提到问题是什么或你打算做什么,所以。。。。