c-如何检查数组的元素是否为终止元素并返回新行



我需要检查一个类似"Hello"的数组,并检查终止元素何时存在,然后返回一行。我一直在尝试这样的代码:

char * my_strchr(const char * string, int ch)
{
  int count;
  int length = strlen(string);
  for(count = 0; count < length; count++)
  {
    if(string[count] == '')
    {
      return 'n' ;
    }
  }

由于某种原因,我的编译器不喜欢我使用这些。在字符串的函数声明中,它读取const char * string

strlen函数返回字符串长度,不带NULL终止符。这意味着您的函数不会返回char指针,因为您的代码永远不会达到条件string[count] == ''

此外,即使您确实达到了该条件,也会返回char,而不是char *,这是一个错误。您的函数同意返回char *,因此需要返回某种char *,即使它指向NULL

从函数代码中也不清楚,因为它缺少终止括号,但函数可能永远不会返回任何内容。

根据您的描述进行猜测,但可能是这样的?

char * my_strchr(const char * string, int ch) {
    int i;
    int c;
    for (i = 0; (c = string[i]) != ''; ++i) {
        if (c == ch) return string + i;           /* aka &string[i] */
    }
    return "n";        /* got to the end w/o finding ch in string */
}
char *my_strchr(const char *string, int ch){
    if(*string == '')
        putchar('n');//side effect
    while(*string){
        if(*string == ch)
            return (char*)string;
        ++string;
    }
    return *string == ch ? (char*)string : NULL;
}

相关内容

最新更新