C 我试图将字符串传递到带有双指针的函数中,但得到了一个错误

C 我试图将字符串传递到带有双指针的函数中,但得到了一个错误,c,pointers,C,Pointers,所以我想传递字符数组的双指针,但我得到了以下错误: 警告:指针和整数之间的比较 如果(*(ptr_double+i)!=''&*(ptr_double+i+1)='') 这是我的密码: #include <stdio.h> #include <stdlib.h> #include <string.h> void word_counter(char **ptr_double, int len) { int i = 0, j = 0, count = 0,

所以我想传递字符数组的双指针,但我得到了以下错误: 警告:指针和整数之间的比较 如果(*(ptr_double+i)!=''&*(ptr_double+i+1)='') 这是我的密码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void word_counter(char **ptr_double, int len)
{
    int i = 0, j = 0, count = 0, word = 0;
    for (i = 0; i < len; i++)
    {   
        if (*(ptr_double+i) != ' ' && *(ptr_double+i+1) == ' ')
            word = word + 1;
    }word++;
    printf("The number of words is %d\n", word + 1);
   
}
int main()
{
    int len, i;
    char sentence[100];
    char temp;
    char *ptr = sentence, **ptr_double = &ptr;
    printf("Enter a sentence\n");
    fflush(stdin);
    gets(*ptr_double);
    puts(*ptr_double);
    len = strlen(*ptr_double);
    word_counter(ptr_double, len);
}

ptr\u double
是一个
char**
。这意味着
*ptr\u double
是一个
char*

所以在
*(ptr_double+i)!='
您正在将
char*
映射为
int
'

当使用多个级别的指针时,请始终确保您知道要取消引用的内容


您实际需要的是
*(*ptr\u double+i)
(*ptr\u double)[i]
,因为
*ptr\u double
实际上指向要索引的字符串。

ptr\u double
是一个
字符**
。这意味着
*ptr\u double
是一个
char*

所以在
*(ptr_double+i)!='
您正在将
char*
映射为
int
'

当使用多个级别的指针时,请始终确保您知道要取消引用的内容


实际上,您需要的是
*(*ptr\u double+i)
(*ptr\u double)[i]
,因为
*ptr\u double
实际上指向要索引的字符串。

您的代码根本不需要使用
字符**ptr\u double
。函数名称:
元音计数器(ptr\u double,len)错误引导。它似乎应该被称为
word\u counter
也许?@ryker实际上这是更大问题的一部分,使用双指针是问题的要求,这就是为什么我必须使用'emcode>*(数组+索引)
数组[索引]
的表达式是等价的。但是其中一个比另一个可读性好得多。在这个特定的代码中,
ptr\u double
只是
ptr
的地址,这意味着它指向一个字符指针
*ptr_double
将为您提供此指针的值。但是
(ptr\u double+i)
已经超过了
ptr\u double
的末尾,我认为您应该尝试将
i
添加到
*ptr\u double
,然后取消引用,以获得字符,您的代码根本不需要使用
char**ptr\u double
。函数名称:
元音计数器(ptr\u double,len)错误引导。它似乎应该被称为
word\u counter
也许?@ryker实际上这是更大问题的一部分,使用双指针是问题的要求,这就是为什么我必须使用'emcode>*(数组+索引)
数组[索引]
的表达式是等价的。但是其中一个比另一个可读性好得多。在这个特定的代码中,
ptr\u double
只是
ptr
的地址,这意味着它指向一个字符指针
*ptr_double
将为您提供此指针的值。但是
(ptr\u double+i)
已经超过了
ptr\u double
的末尾,我认为您应该尝试将
i
添加到
*ptr\u double
,然后取消引用以获得一个character@Lodger,检查你的逻辑。给定的语法是正确的,并且可以访问您想要的字符。@Lodger,检查您的逻辑。给定的语法正确,可以访问所需的字符。