我试图编写strchr()
.
char *ft_strchr(const char *s, int c)
{
(unsigned char)c;
while (*s)
{
if (*s == c)
return ((char *)s);
s++;
}
if (c == '\0')
return ((char *)s);
return (NULL);
}
它在大多数情况下都类似,除了这个:
printf("%s\n", strchr("Whats up with you, men", ' up'));
strchr
返回
p with you, men
而我的版本ft_strchr
返回NULL
我很好奇为什么strchr
会这样。' up'
转换unsigned char
为“p”(如int
538998128)。
此外,我在这里发现了不同的实现,即使有这些数据,它也表现得像 strchr。
char *ft_strchr(const char *s, int c) {
while (*s != (unsigned char) c) {
if (!*s)
return NULL;
s++;}
return (char *)s;
}
我的版本也不同,我想他们应该工作相似,但他们没有。我真的很感兴趣为什么?
提前致谢。