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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2012, 19:37   #1
karol_bubey
Новичок
Джуниор
 
Регистрация: 04.06.2012
Сообщений: 2
По умолчанию C++ Символьные строки и функции обработки строк

Задание: написать аналог библиотечной функции strstr- найти в строке sl первое вхождение строки s2.
Объявление
Код:
char*strstr(char*s1,chars*s2);
Значение функции-ссылка на первое вхождение s2 в s1 или NULL(пуста ссылка), если подстроки s2 нет в s1.
Например если s1="ab1111234cs1123", s2="1123", функция вернёт адрес третьего символа '1' в строке s1, с которого начинается подстрока "1123"
Пример вызова функции:

Код:
char tex[]= "Группа 4172", *p
if ((p=strstr(text, "4172"))!=NULL)
strcpy(p, "4272"); /* В результате text= "Группа 4272" */

Последний раз редактировалось karol_bubey; 04.06.2012 в 19:42.
karol_bubey вне форума Ответить с цитированием
Старый 04.06.2012, 20:57   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Код:
char *strstr(const char *str1, const char *str2)
{
  char *cp = (char *) str1;
  char *s1, *s2;

  if (!*str2) return (char *) str1;

  while (*cp)
  {
    s1 = cp;
    s2 = (char *) str2;

    while (*s1 && *s2 && !(*s1 - *s2)) s1++, s2++;
    if (!*s2) return cp;
    cp++;
  }

  return NULL;
}
http://www.jbox.dk/sanos/source/lib/string.c.html
ultimatet41 вне форума Ответить с цитированием
Старый 04.06.2012, 21:31   #3
karol_bubey
Новичок
Джуниор
 
Регистрация: 04.06.2012
Сообщений: 2
Восклицание

Цитата:
Сообщение от ultimatet41 Посмотреть сообщение
Код:
char *strstr(const char *str1, const char *str2)
{
  char *cp = (char *) str1;
  char *s1, *s2;

  if (!*str2) return (char *) str1;

  while (*cp)
  {
    s1 = cp;
    s2 = (char *) str2;

    while (*s1 && *s2 && !(*s1 - *s2)) s1++, s2++;
    if (!*s2) return cp;
    cp++;
  }

  return NULL;
}
http://www.jbox.dk/sanos/source/lib/string.c.html
Спасибо! А как можно теперь сделать из этого полноценную программу?
Так что там ввод двух строк, вызов этой функии, вывод результата ?

karol_bubey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели, символьные строки и функции Vera_0709 Помощь студентам 0 28.12.2011 13:35
Символьные функции marme Общие вопросы C/C++ 4 22.12.2010 22:32
Символьные строки Арнис Общие вопросы C/C++ 1 13.07.2010 14:04
Указатели, символьные строки и функции dimit4 Общие вопросы C/C++ 1 15.01.2010 05:31
Помогите решить задачу ан тему: Указатели, строки, функции обработки строк Chel Общие вопросы C/C++ 3 11.10.2009 19:48