簡體   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