Как увеличить переменную, когда strstr находит указанную строку

Я хочу, чтобы моя переменная houseTot увеличивалась на единицу каждый раз, когда strstr находит строку с "house" в ней. По сути, я сделал это в своем коде:

struct Owner1_def
{
    int totProps;
    char type[40];
    float monthlyPrice;
    float maintenance;
    int bedrooms;
    int bathrooms;
};
typedef struct Owner1_def Owner1;
int main(void)
{
char *ptr;
int i = 0;
ptr = strstr(database[i].hometype, "house");
for(i = 0; i <= 3; ++i)
{
if (ptr != NULL)
    houseTot++;
}
return 0;
}

Но когда программа печатает значение houseTot, оно все еще имеет начальное значение 0. Я не знаю много о strstr, но из того, что я прочитал, это должно работать.

1 ответ

Призыв к strstr() должны быть перемещены внутри цикла так, чтобы значение сохранялось в database[i].hometype можно проверить на каждой итерации:

for(i = 0; i <= 3; ++i) {
    ptr = strstr(database[i].hometype, "house");
    if (ptr != NULL)
        houseTot++;
}

Обратите внимание, что опубликованный код не имеет определения для массива structs database[]и struct при условии, не имеет hometype поле.

Другие вопросы по тегам