这有什么问题?
#include <stdio.h>
void main(){
char *s="some text";
printf("%d",is_in(s,'t'));
}
int is_in(char *s, char c){
while(*s){
if(*s==c) return 1;
s++;
}
return 0;
}
我在GCC中遇到以下编译时错误:
test.c:9:错误:'is_in'的冲突类型
test.c:9:注意:具有默认促销的参数类型不能与空参数名称列表声明匹配
test.c:5:注意:'is_in'之前的隐式声明就在这里
答案 0 :(得分:6)
您是否尝试将is_in函数置于main?
之上?答案 1 :(得分:1)
您正在递增字符,而不是指针。将* s ++更改为简单的s ++。此外,您忘记了向前声明您的函数“is_in”。另一个注意事项:你应该把你的字符串变成“const char *”而不是“char *”,而且,恕我直言,与'\ 0'明确比较并使用索引更清楚:
#include <stdio.h>
int is_in(const char*, char);
int main(int argc, char* argv[]){
const char* str="some text";
printf("%d",is_in(s,'t'));
return 0;
}
int is_in(const char* str, char c){
int idx=0;
while ( str[idx] != '\0' ){
if ( str[idx] == c ){
return 1;
}
idx++;
}
return 0;
}