测试C中字符串中是否存在字符

时间:2010-05-17 04:14:12

标签: c

这有什么问题?

#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'之前的隐式声明就在这里

2 个答案:

答案 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;
}