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

时间:2014-09-10 22:12:19

标签: c arrays

我需要检查一个像'Hello'这样的数组并检查终止元素是什么时候然后返回一个新行。我一直在尝试这样的代码:

char * my_strchr(const char * string, int ch)
{
  int count;
  int length = strlen(string);

  for(count = 0; count < length; count++)
  {
    if(string[count] == '\0')
    {
      return '\n' ;
    }
  }

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

3 个答案:

答案 0 :(得分:0)

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

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

您的功能代码也不清楚,因为它没有终止括号,但您的功能可能永远不会返回任何内容。

答案 1 :(得分:0)

从您的描述中猜测,但也许是这样的?

char * my_strchr(const char * string, int ch) {

    int i;
    int c;

    for (i = 0; (c = string[i]) != '\0'; ++i) {
        if (c == ch) return string + i;           /* aka &string[i] */
    }
    return "\n";        /* got to the end w/o finding ch in string */
}

答案 2 :(得分:0)

char *my_strchr(const char *string, int ch){
    if(*string == '\0')
        putchar('\n');//side effect
    while(*string){
        if(*string == ch)
            return (char*)string;
        ++string;
    }
    return *string == ch ? (char*)string : NULL;
}