Страница 1 из 1

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

Добавлено: 05 ноя 2013, 19:14
siner
Необходимо чтобы программа распечатывала позиции вхождения второй строки в первую и их общее количество.

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

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ую строку. Программа результат не выводит. Подскажите, пожалуйста, как это можно исправить?

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

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