Я новичок в C, поэтому я немного поиграл с ним и придумал эту функцию поиска, которую планирую перейти на функцию поиска и замены. Я уверен, что это работает, так как я тестировал его с кучей входов и всегда получал соответствующее количество «Word found!». печать.Эта функция поиска выглядит хорошо?
void searchString() {
char message[] = "This is a test message test test";
char wordToFind[] = "message";
int i = 0;
for (i = 0; i < sizeof(message) - 1; i++) {
if (message[i] == wordToFind[0]) {
int i2 = 0;
for (i2 = 1; i2 < sizeof(wordToFind) - 1; i2++) {
if (message[i + i2] != wordToFind[i2]) {
i++;
break;
}
if (i2 == sizeof(wordToFind) - 2) {
printf("Word found!\n");
break;
}
}
}
}
}
Вопрос в том, эффективен ли это или есть ли лучший способ сделать это в C?
Первое впечатление, что есть * способ * слишком много уровней отступа. Как правило, если у вас более трех, перепишите код. Также обратите внимание, что 'sizeof' даст неожиданные результаты, если, скажем, передал указатель. Я думаю, вы имеете в виду 'strlen'. –
Спасибо, я смотрел на нее и думал то же самое. Я чувствую, что могу найти способ покончить со вторым за цикл. – Genthorn
Ах, просто прочитайте на strlen(), и это выглядит намного больше, чем то, что я хотел использовать – Genthorn