[英]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.