Split string in C


//
// https://www.programiz.com/c-programming/online-compiler/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

char **split(char *string, char * splitter, int *count); 

int main() {


    char **ptr;
    int nr_ptrs=0;
    char a[]="To be, or (not) to be, that is the question.";
    char separators[]=",(). ";

    printf("Original string: %s\nSeparators: %s\n", a, separators);
    ptr=split(a, separators, &nr_ptrs);

     for (int i=0; i < nr_ptrs; i++) {
      //  printf("%c\n", *ptr[i]);   // every character of a
        printf("%s\n", ptr[i]);    // pointer moving up a
    }
    free(ptr);

    return 0;
}


char **split(char *string, char * splitter, int *count) {
    
    char *ptr;
    bool first=true;
    int j=0;
    int len = strlen(string);
    
    // dynamically declared pointer array as return value    
    char **p=(char **)malloc((len) * sizeof(char *));
    
    for (int i=0; i < len; i++) {
        // search for char of string in splitter string
        ptr=strchr(splitter,string[i]); 
        // char not in splitter, set pointer 1 time
        if (ptr == NULL) { 
            if (first) { 
                p[*count] = &string[i];
                (*count)++;
                first=false;
            }
        } else {   // char in splitter, marks end of substring with \0
            string[i] = '\0';
            first = true;
        }
        
    }
    return p;
}