我需要检查一个像'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
答案 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;
}