#include <stdio.h>
#include <string.h>
int count (const char *str, const char *search);
int count (const char *str, const char *search)
{
int counter = 0,flag = 0;
const char *holdstr, *holdsearch;
do
{
for (holdstr = str, holdsearch = search ;
*holdsearch != '\0' && *holdstr == *holdsearch ;
holdsearch++,holdstr++) {}
if (*holdsearch == '\0')
{
counter++;
flag = 1;
}
}while (*(str++));
if (flag) return counter;
return -1;
}
int main()
{
const char *find = "the";
const char *arr1 = "the cat sat on the mat";
const char *arr2 = "theqqqqq cat sat on the mat";
const char *arr3 = "-qthe-- cat sat on theok mat";
int val = count(arr1, find);
printf("%d\n", val);
val = count(arr2, find);
printf("%d\n", val);
val = count(arr3, find);
printf("%d\n", val);
return 0;
}
Я пытаюсь найти взаимно однозначные слова. Но у меня есть и другие слова, в которые включено указанное слово. Функция аналогична функции strstr()
. Я также понял, что он идет за strstr()
Как может быть проблема исправлена?слово появление в строке с использованием указателя
Output Expected Output
------- ---------------
2 2
2 1
2 0
Ваша функция работает правильно. Вы ожидали, что выход будет неправильным в отношении функции. Чтобы исправить это, вам нужно определить пробелы и проверить слова. – Enerccio
почему вы ожидаете 1 за последнее? не должно быть нуля? и вам нужно проверить, действительно ли совпадение - это слово (что означает, что ему предшествует символ не-слова, за которым следует символ без слов) – x4rf41
да, вы правы, исправлено @ x4rf41 – snr