я книгу читаю по C. автор сказал, типа в качестве упражнения написать функцию, которая в данном тексте находит данную подстроку. в принципе сделал, только немного коряво получилось - подгонять пришлось по ходу. вот код:
int find_substring(char*text, char*word)
{
int count=0;
int c;
int len_w=strlen(word);
int len_t=strlen(text);
for(int i=0;i<len_t;i++)
{
if(text[i]==word[0])
{
c=0;
while(c<len_w&&text[i]==word[c])
{
i++;
c++;
}
if(c==strlen(word))
count++;
i--;
}
}
return count;
}
я просто адрес автора не нашел, потому сюда пишу. может если время и желание у кого есть свою версию написать, чтоб я посмотрел или совет дать. заранее спасибо
если уж писать это вручную...17.08.05 20:29 Автор: dl <Dmitry Leonov> Отредактировано 18.08.05 10:44 Количество правок: 2
то strlen не нужен, достаточно сравнивать с нулем. И счетчики избыточные, тот же внутренний while записывается гораздо элегантнее, если работать через указатели:
(кстати, в этом цикле не хватает проверки на выход за границу текста)
Остальной код аналогично, его лучше написать самому, чтобы прочувствовать работу со строками через указатели.
В "while(" опечатка: надо "*pW" вместо просто "pW".18.08.05 09:58 Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman Отредактировано 18.08.05 10:39 Количество правок: 2
И еще. В предположении того, что обрабатывается простой текст, в котором встречаются слова с аналогичными приставками, корнями и даже суффиксами, но отличающимися окончаниями, быстрее будет сравнивать с шаблоном начиная с конца, чтоб не тратить время на проверку совпадающей части слова.