请帮助我,我正在尝试实施strchr
,当我运行此代码时,我仍然得到Null
...它有什么问题?
char *ft_strchr(const char *str, int c)
{
int i;
char *temp;
i = 0;
while (str[i])
{
if (str[i] == c)
{
*temp = str[i];
return (temp);
}
else
return (NULL);
i++;
}
return (str);
}
答案 0 :(得分:2)
char* ft_strchr(const char *str, int c){
size_t i;
char *temp;
i = 0;
while (str[i])
{
if (str[i] == c)
{
temp = &str[i];
return temp;
}
i++;
}
if(str[i]==c)
{
return &str[i];
}
return NULL;
// You need to return NULL after scanning whole line..
// Or it will send NULL checking after 1st character
}
答案 1 :(得分:1)
Activity
应该返回指向字符串中匹配字符的指针。你正在返回一个指针,但它并没有指向字符串。你从来没有初始化它,所以它并没有指向任何地方。
更改
strchr
为:
*temp = str[i];
答案 2 :(得分:1)
以下代码:
for()
语句,以便编译器处理所有循环细节,注意:这种表达式:*str
的计算结果为true,除非指向的char为'\ 0'。
所以下面的代码遍历传入的char字符串,终止于两个条件之一。
1) a matching char is found in the string or
2) end of string is encountered.
如果遇到字符串结尾,则return语句返回NULL,否则返回首次在字符串中找到匹配字符的地址。
char *ft_strchr(const char *str, int c)
{
for( ; *str && (*str != c); str++ ) ;
return ( *str? str : NULL);
}