Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 19:30   #1
Kr@ShAK
Пользователь
 
Регистрация: 17.12.2013
Сообщений: 11
По умолчанию Подсчет подстроки в строке (Си)

Подскажите пожалуйста как можно в СИ подсчитать количество повторений строки x2 в строке х1.(желательно с комментарием).
Kr@ShAK вне форума Ответить с цитированием
Старый 17.12.2013, 19:36   #2
Kr@ShAK
Пользователь
 
Регистрация: 17.12.2013
Сообщений: 11
По умолчанию

вот часть от всей программы как раз где возникла проблема, тут я пытаюсь обнулять по ходу выполнения всю исходную строку, но это не правильно...
Код:
printf("Vvedite shablon\n");
scanf("%s", &x2);
strcpy(x1,"");
for(p=0,i=0;strlen(itog)>i;i++)
{ 
istr=strstr(itog,x2);
if (istr!=NULL)
{
itog[i]=' ';
if (strcmp(istr,x1)!=0)
{ 
p=p+1;
strcpy(x1,istr); 
}
}
}
printf("Dannaja posledovatel'nost' zna4en. - %s vstre4aetsja - %d raz \n\n",x2,p/2);
Kr@ShAK вне форума Ответить с цитированием
Старый 18.12.2013, 05:45   #3
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Код:
	char *main_str;			// строка, в которой будем искать
	char *sub_str;			// строка, которую будем искать
	int sub_str_count = 0;	// количество вхождений подстроки

	char *tmp = main_str;	// временный указатель

	// ищем вхождения
	while (( tmp = strstr(tmp, sub_str)) != NULL)
	{
		sub_str_count++;
	}
nikmoon вне форума Ответить с цитированием
Старый 18.12.2013, 09:44   #4
Kr@ShAK
Пользователь
 
Регистрация: 17.12.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от nikmoon Посмотреть сообщение
Код:
	char *main_str;			// строка, в которой будем искать
	char *sub_str;			// строка, которую будем искать
	int sub_str_count = 0;	// количество вхождений подстроки

	char *tmp = main_str;	// временный указатель

	// ищем вхождения
	while (( tmp = strstr(tmp, sub_str)) != NULL)
	{
		sub_str_count++;
	}
Таким образом если совпадения есть программа входит в бесконечный цикл
Kr@ShAK вне форума Ответить с цитированием
Старый 18.12.2013, 09:48   #5
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

О блин, точно )))
Исправить можно одной строчкой )
Дерзай.
nikmoon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск подстроки в строке С pepsik66 Помощь студентам 10 12.11.2012 19:25
Найти подстроки в строке Uniskull C# (си шарп) 2 16.03.2012 16:34
поиск подстроки в строке Pozitiffe Общие вопросы C/C++ 5 18.02.2012 21:48
Поиск подстроки в строке valdemar593 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 03.06.2010 21:42