我需要检查一个类似"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;
}