我正在尝试实现一个函数,它在全局变量中搜索第一次出现的传递字符串。找到后,我希望它将匹配的char作为指针返回。
然而,这不起作用:
警告:return使用整数生成指针而不使用强制转换[启用 默认]
char *find(const char *s)
{
int i = 0;
const char *ptr = s;
while(ptr[i])
{
//wordList is a global struct with a string
if(ptr[i] == wordList->search[0])
{
return ptr[i];
}
else i+=1;
}
return NULL;
}
答案 0 :(得分:3)
您想要返回&ptr[i]
- 您的代码将返回找到的字符的值返回指针。
此外,您正在接收const char*
并返回char *
- 您应该修复此问题 - 更改返回类型或s
和ptr
。此外,您不需要ptr
- 您可以直接取消引用s
。
const char* const s
答案 1 :(得分:1)
ptr[i]
的类型为char
。您需要从函数返回char
指针,因为其返回类型为char *
。使用
return &ptr[i];
正如 Bit Fiddling Code Monkey在他的评论中指出的那样,最好更改函数的返回类型
const char *find(const char *s) { ... }