Advertisement
Guest User

Untitled

a guest
May 29th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. // Функция поиска строки B в строке A
  2. char *search_str (char *A, char *B)
  3. {
  4.     bool m = 0;             // Булевая переменная, отвечающая за нахождение строки В в строке А.
  5.     char *skA, *skB, *sli = A;
  6.     if (    *B =='\0')          // Проверяем, состоит ли строка В из одного символа '\0'
  7.         return A;
  8.     while (*sli != '\0' && m == 0)      // Сдвигаем указатель sli до тех пор, пока значением в нем не достигнет символа окончания строки
  9.     {
  10.         skA = sli;  // "Вагонетка" по строке А, начиная с sli
  11.         skB = B;        // "Вагонетка" по строке В
  12.         while (*skA == *skB && *skA != '\0' && skB != '\0') // Сравниваем значения, на которые "смотрят" указатели skA и skB, если они равны и эти значения не '\0', то переходим к следующей итерации. Строка будет найдена, если "вагонетка" по строке В дойдет до символа '\0' + дойдет раньше, чем "вагонетка" по строке А дойдет до своего '\0'
  13.         {
  14.             skA++;
  15.             skB++;
  16.         }
  17.         if (*skB == '\0')   // Если строка В найдена в строке А, то флажок становится равен 1
  18.             m = 1;
  19.         else
  20.             sli++;
  21.     }
  22.     if (m == 0)
  23.         return NULL;            // Если строка В не найдена в строке А, то возвращаем NULL
  24.     else
  25.         return sli;         // Если строка В найдена в строке А, то возвращаем на нее указатель.
  26. }
  27.  
  28.  
  29. // Функция поиска символа из строки В в строке А
  30. char *strchr_search_str (char *A, char *B)
  31. {
  32.     bool m = 0;             // Булевая переменная, отвечающая за нахождение символа из строки В в строке А
  33.     char *skA = A, *skB = B;
  34.     if (*skB == '\0')
  35.         return NULL;
  36.     while (*skA != '\0' && m == 0)
  37.     {
  38.         skB = B;        // "Вагонетка" по строке В
  39.         while (*skB != '\0' && m == 0)
  40.         {
  41.             if (*skB == *skA)
  42.                 m = 1;
  43.             else
  44.                 skB++;
  45.         }
  46.         if (m == 0)
  47.             skA++;
  48.     }
  49.     if (m == 0)
  50.         return NULL;
  51.     else
  52.         return skA;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement