Advertisement
Shystik

Untitled

Nov 24th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. // Очитска буфера ввода если использовали scanf
  5. // и считывали до символа переноса строки
  6. void clean_buffer()
  7. {
  8. int c;
  9. while((c = getchar()) != '\n');
  10. }
  11.  
  12. int substr(char* str1, char* str2, int** result, int, int);
  13.  
  14. int main()
  15. {
  16. int str1_len; // Размер подстроки
  17. int str2_len; // Размер строки в которой искать подстроку
  18. scanf("%i %i", &str1_len, &str2_len);
  19. clean_buffer();
  20.  
  21. char* str1;
  22. char* str2;
  23.  
  24. str1 = calloc ( str1_len, sizeof (char) );
  25. str2 = calloc ( str2_len, sizeof (char) );
  26.  
  27. scanf ("%s", str1);
  28. scanf ("%s", str2);
  29.  
  30. str1 [str1_len]='\n';
  31. str2 [str2_len]='\n';
  32.  
  33. int* result;
  34. int arr_len = substr(str1, str2, &result, str1_len, str2_len);
  35. int i = 0;
  36. for(i = 0; i < arr_len; i++)
  37. printf("%i ", result[i]);
  38. }
  39.  
  40. int substr(char* str11, char* str22, int** result, int len1, int len2)
  41. {
  42. int k=0;
  43. int j=0;
  44. int n=0;
  45. int d=0;
  46. char* istr;
  47. while(istr != NULL){
  48. istr = strstr (str22, str11);
  49. d = istr-str22;
  50. result[k]=d+n;
  51. k++;
  52. n=n+result[k]+len1;
  53. for (j=0; j<len2-n;j++)
  54. str22[j] = str22[j+n];
  55. }
  56. return k;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement