繁体   English   中英

在C中返回一个指针,在字符串中查找值

[英]return a pointer in C, find value in string

我正在尝试学习C。我有一个问题,要求我循环遍历字符串,找到一个值并返回它。

int main(void)
{

    char *hello = "Hello";
    char *found_char = find_char(hello, 'e');
    printf("Found char: %s\n", found_char);
}

char *find_char(char *str, int c)
{
  int x;
  for (x = 0; str[x] != 0; x++){
    if (c == str[x]){
      return str[x];
    }
  }
}

我得到以下错误

warning:returning 'char' from a function with return type 'char *' makes pointer from integer without a cast

我有一种返回错误类型的感觉,但是我对指针在C中的工作方式仍然有点模糊。有人可以指出我做错了什么,还是示例问题中指针在做什么? ?

str[x]是一个char (具体地说,它是char类型的对象)。

&str[x]char的指针,也称为char *

您的函数被声明为返回char * 因此,返回一个指向char的指针。

您需要返回一个指向找到的字符串的指针

return str[x];

应该

 return &(str[x]);

请注意,您的功能与标准strchr功能相同: http: strchr

从错误中学习并了解。 它说您返回一个char但您的函数已定义为返回指向char(char )*的指针

而不是return str[x]; ,使用return &str[x];返回指向char的指针return &str[x];

也有一种解决方法。

您可以将函数声明为

char find_char(){...}

代替

char *find_char(){...}

同时更改您的printf()语句。

这是我所做的更改:

   int main(void)
  {

     char *hello = "Hello";
     char found_char = find_char(hello, 'e');
     printf("Found char: %s\n", found_char);
  }

  char find_char(char *str, int c)
 {
    int x;
    for (x = 0; str[x] != 0; x++){
    if (c == str[x]){
       return str[x];
    }
  }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM