позиции вхождения второй строки в первую

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
siner
Сообщения: 3
Зарегистрирован: 05 ноя 2013, 18:54

Необходимо чтобы программа распечатывала позиции вхождения второй строки в первую и их общее количество.

Код: Выделить всё

int main(int argc, char* argv[]) {
  char str[100], substr[50];
  printf("Vvedi stroku:"); gets(str);
  printf("Vvedi podstroku:"); gets(substr);   
  char* p;
  // c - счетчик вхождений.
  // i - индекс символа, начиная с которого ищем подстроку.
  for (int c = 1, i = 0; i < 100 && (p = strstr(&str[i], substr)); i++)
    printf("Poziciya vhozhdeniya #%d: %d\n", c++, i = p - str);
  _getch();
  return 0;}
Что-то не работает. Ввожу 1ую строку, 2ую строку. Программа результат не выводит. Подскажите, пожалуйста, как это можно исправить?
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Где-то я встречал фразу следующего вида: "Паскаль лучше Си, потому что на Си можно написать <тут вырвиглазная конструкция на Си, взрывающая мозг программисту, но спокойно компилирующаяся>. На Паскале такого НЕЛЬЗЯ написать".
Поэтому, если у вас что-то не работает, попробуйте написать ваш код предельно просто, без эквилибристики типа присвоения указателя внутри оператора цикла, а не в теле. Выводите результат на каждом шаге. Так и найдете, в чем ошибка.
А еще - зачем int main(int argc, char* argv[]) , если тут просто напрашивается void main(void)?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить