Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- // Удаление символа переноса строки из буфера ввода
- void clean_buffer() {
- int c;
- while ((c = getchar()) != '\n');
- }
- int substr(char *str1, char *str2, int **result);
- int main() {
- int str1_len; // Размер подстроки
- int str2_len; // Размер строки в которой искать подстроку
- scanf("%i %i", &str1_len, &str2_len);
- clean_buffer();
- char *str1;
- char *str2;
- // Выделить память и считать строки
- str1 = malloc(str1_len * sizeof(char) + 1);
- str2 = malloc(str2_len * sizeof(char) + 1);
- scanf("%s %s", str1, str2);
- int *result;
- int arr_len = substr(str1, str2, &result);
- for (int i = 0; i < arr_len; i++) {
- printf("%i ", result[i]);
- }
- return 0;
- }
- // не изменяйте тип и количество аргументов этой функции
- int substr(char *str1, char *str2, int **result) {
- int len_1 = strlen(str1);
- int len_2 = strlen(str2);
- char el = str1[0];
- int j = 0;
- int kl = 0;
- int flag = 0;
- int *arr = malloc(len_2 * sizeof(int));
- for (int i = 0; i < len_2; i++) {
- if (str2[i] == el) {
- for (int k = 1; k < len_1; k++) {
- if (*(str1 + k) != *(str2 + i + k)) {
- flag = 1;
- break;
- }
- }
- if (flag == 0) {
- arr[j] = i;
- j++;
- kl++;
- }
- flag = 0;
- }
- }
- *result = arr;
- return kl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement