Advertisement
LilChicha174

Untitled

Dec 9th, 2021
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. // Удаление символа переноса строки из буфера ввода
  6. void clean_buffer() {
  7.     int c;
  8.     while ((c = getchar()) != '\n');
  9. }
  10.  
  11. int substr(char *str1, char *str2, int **result);
  12.  
  13. int main() {
  14.     int str1_len; // Размер подстроки
  15.     int str2_len; // Размер строки в которой искать подстроку
  16.     scanf("%i %i", &str1_len, &str2_len);
  17.     clean_buffer();
  18.  
  19.     char *str1;
  20.     char *str2;
  21.  
  22.     // Выделить память и считать строки
  23.     str1 = malloc(str1_len * sizeof(char) + 1);
  24.     str2 = malloc(str2_len * sizeof(char) + 1);
  25.     scanf("%s %s", str1, str2);
  26.     int *result;
  27.     int arr_len = substr(str1, str2, &result);
  28.     for (int i = 0; i < arr_len; i++) {
  29.         printf("%i ", result[i]);
  30.     }
  31.     return 0;
  32. }
  33.  
  34. // не изменяйте тип и количество аргументов этой функции
  35. int substr(char *str1, char *str2, int **result) {
  36.     int len_1 = strlen(str1);
  37.     int len_2 = strlen(str2);
  38.     char el = str1[0];
  39.     int j = 0;
  40.     int kl = 0;
  41.     int flag = 0;
  42.     int *arr = malloc(len_2 * sizeof(int));
  43.     for (int i = 0; i < len_2; i++) {
  44.         if (str2[i] == el) {
  45.             for (int k = 1; k < len_1; k++) {
  46.                 if (*(str1 + k) != *(str2 + i + k)) {
  47.                     flag = 1;
  48.                     break;
  49.                 }
  50.             }
  51.             if (flag == 0) {
  52.                 arr[j] = i;
  53.                 j++;
  54.                 kl++;
  55.             }
  56.             flag = 0;
  57.  
  58.         }
  59.     }
  60.     *result = arr;
  61.     return kl;
  62. }
  63.  
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement