我写了一些我认为非常接近问题答案的代码,但是我似乎无法正确比较两个字符。我不知道如何正确投射它们。
我知道如何使用数组来做到这一点,但是我想知道如何使用指针来做到这一点。
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
终止的字符数组(字符串)进行搜索,然后输入第二个字符串参数T
。string T
是list of characters
(不包括“ \ 0”),它们是令牌或要在S
中搜索的字符。请勿修改S
或T
。如果在return
或T
中找到,它将S
指向在S,
中找到的NULL
中第一个字符的位置的字符指针。
例如:
printf("%s", *FindToken(“are exams over yet?”, “zypqt”)); // will display “yet?”
答案 0 :(得分:7)
你快接近了。
没什么问题。
(t++)
时,最终将使t
指向其内存的末尾并领先UB。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;
}