Advertisement
maxim_shlyahtin

Str_test

Oct 17th, 2022
694
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define N 100
  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.     char* str1 = malloc(str1_len * sizeof(char));
  19.     char* str2 = malloc(str2_len * sizeof(char));
  20.     int* result = malloc(N * sizeof(int));
  21.     fgets(str1, str1_len + 1, stdin);
  22.     clean_buffer();
  23.     fgets(str2, str2_len + 1, stdin);
  24.     int arr_len = substr(str1, str2, &result);
  25.     for(int i = 0; i < arr_len; i++)
  26.         printf("%i ", result[i]);
  27.     free(str1);
  28.     free(str2);
  29.     free(result);
  30.     return 0;
  31. }
  32.  
  33.  
  34. int substr(char* str1, char* str2, int** result){
  35.     int i;
  36.     int arr_size = 0;
  37.     int* tmp_arr = *result;
  38.     if(strlen(str1) > 1) {
  39.         for (i = 0; i < strlen(str2);) {
  40.             int step = 0;
  41.             if (str2[i] == str1[0]) {
  42.                 for (int j = 0; j < strlen(str1); j++) {
  43.                     if (str2[i + j] == str1[j])
  44.                         step += 1;
  45.                 }
  46.             }
  47.             if(step == strlen(str1)){
  48.                 tmp_arr[arr_size] = i;
  49.                 arr_size++;
  50.                 i += step;
  51.             } else
  52.                 i++;
  53.         }
  54.     } else{
  55.         for(int k = 0; k < strlen(str2); k++) {
  56.             if (str2[k] == str1[0]) {
  57.                 tmp_arr[arr_size] = k;
  58.                 arr_size++;
  59.             }
  60.         }
  61.     }
  62.     return arr_size;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement