[英]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
的指針。
從錯誤中學習並了解。 它說您返回一個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.