实现字符串查找方法

时间:2013-11-21 14:20:23

标签: c

我正在尝试实现一个函数,它在全局变量中搜索第一次出现的传递字符串。找到后,我希望它将匹配的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;
}

2 个答案:

答案 0 :(得分:3)

您想要返回&ptr[i] - 您的代码将返回找到的字符的值返回指针。

此外,您正在接收const char*并返回char * - 您应该修复此问题 - 更改返回类型或sptr。此外,您不需要ptr - 您可以直接取消引用s

哦,如果你坚持使用consts并且我们很挑剔,那么它应该是const char* const s

答案 1 :(得分:1)

ptr[i]的类型为char。您需要从函数返回char指针,因为其返回类型为char *。使用

return &ptr[i];  

正如 Bit Fiddling Code Monkey在他的评论中指出的那样,最好更改函数的返回类型

const char *find(const char *s) { ... }