我们应该编写一个函数来返回字符串str中第一次出现ch的地址。我编写了下面的代码,它运行并且似乎返回可能正确的数字(我在字符串中为5个字符调用了5次函数,并且返回值以1个字节分隔。)但是,返回语句中的&符号带有悬停文本的红色下划线,"返回值类型与功能类型不匹配。"如果出现错误,我不明白代码是如何构建和运行的。
#include <stdio.h>
#include <string.h>
int mystrchr (char *str, char ch){
int i;
for(i=0;i<strlen(str);i++){
if(str[i]==ch)
{
//printf("%c\n",str[i]);
return &str[i];
}
}
}
答案 0 :(得分:0)
让我告诉你原因:
根据您定义的功能int mystrchr (char *str, char ch){}
,返回类型为int
,但实际值为&str[i];
,代码中的类型为char *
。
所以有警告..
答案 1 :(得分:0)
char* mystrchr (char *str, char ch){
int i;
for(i=0;i<strlen(str);i++){
if(str[i]==ch)
{
break;
}
}
return &str[i];
}
我同意其他人的意见。