Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define N 100
- 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 = malloc(str1_len * sizeof(char));
- char* str2 = malloc(str2_len * sizeof(char));
- int* result = malloc(N * sizeof(int));
- fgets(str1, str1_len + 1, stdin);
- clean_buffer();
- fgets(str2, str2_len + 1, stdin);
- int arr_len = substr(str1, str2, &result);
- for(int i = 0; i < arr_len; i++)
- printf("%i ", result[i]);
- free(str1);
- free(str2);
- free(result);
- return 0;
- }
- int substr(char* str1, char* str2, int** result){
- int i;
- int arr_size = 0;
- int* tmp_arr = *result;
- if(strlen(str1) > 1) {
- for (i = 0; i < strlen(str2);) {
- int step = 0;
- if (str2[i] == str1[0]) {
- for (int j = 0; j < strlen(str1); j++) {
- if (str2[i + j] == str1[j])
- step += 1;
- }
- }
- if(step == strlen(str1)){
- tmp_arr[arr_size] = i;
- arr_size++;
- i += step;
- } else
- i++;
- }
- } else{
- for(int k = 0; k < strlen(str2); k++) {
- if (str2[k] == str1[0]) {
- tmp_arr[arr_size] = k;
- arr_size++;
- }
- }
- }
- return arr_size;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement