C 我试图将字符串传递到带有双指针的函数中,但得到了一个错误
所以我想传递字符数组的双指针,但我得到了以下错误: 警告:指针和整数之间的比较 如果(*(ptr_double+i)!=''&*(ptr_double+i+1)='') 这是我的密码: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,
#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,检查您的逻辑。给定的语法正确,可以访问所需的字符。