在字符串中查找字符数组

时间:2019-04-10 11:54:58

标签: c

我写了一些我认为非常接近问题答案的代码,但是我似乎无法正确比较两个字符。我不知道如何正确投射它们。

我知道如何使用数组来做到这一点,但是我想知道如何使用指针来做到这一点。

char *FindToken(char *s,char *t)
{
    while (s)
    {
        //char check = *(char*)s; tried this but it doesn't work
        while(t)
        {
            if (strcmp(s,t)){
                //return s;
                printf("%s", s);
            }
            t++;
        }
        s++;
    }
    return NULL;
}

这是原始问题:

  

编写一个接受{strong> 2 参数的C function:一个引用到该字符串的,名为{strong> S 的null终止的字符数组(字符串)进行搜索,然后输入第二个字符串参数Tstring Tlist of characters(不包括“ \ 0”),它们是令牌或要在S中搜索的字符。请勿修改ST。如果在returnT中找到,它将S指向在S,中找到的NULL中第一个字符的位置的字符指针。

例如:

printf("%s", *FindToken(“are exams over yet?”, “zypqt”)); // will display “yet?”

1 个答案:

答案 0 :(得分:7)

你快接近了。

没什么问题。

  1. 执行(t++)时,最终将使t指向其内存的末尾并领先UB。
  2. strcmp不能用于比较char

char *FindToken(char *s,char *t)
{
    while (*s)
    {
        int i = 0;
        //char check = *(char*)s; tried this but it doesn't work
        while(t[i])
        {
            if (*s == t[i])) {
                printf("%s", s);
                return s;
            }
            i++;
        }
        s++;
    }
    return NULL;
}