Проверка на наличие символа в строке в C - PullRequest
1 голос
/ 17 мая 2010

Что с этим не так?

#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: note: тип аргумента, который имеет продвижение по умолчанию, не может соответствовать объявлению пустого списка имен параметров

test.c: 5: note: предыдущее неявное объявление «is_in» было здесь

Ответы [ 2 ]

6 голосов
/ 17 мая 2010

Вы пытались поместить функцию is_in выше main?

1 голос
/ 17 мая 2010

Вы увеличиваете символ, а не указатель. Измените * s ++ на просто s ++. Кроме того, вы забыли заранее объявить вашу функцию "is_in". Еще одно замечание: вам, вероятно, следует сделать вашу строку «const char *» вместо «char *», и, IMHO, более четкое сравнение с «\ 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...