#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void split(char str[], char *delimiter) {
char *p = strtok(str, delimiter);
int items = 0;
char **arr;
while (p) {
arr = realloc(arr, sizeof(char *) * ++items);
if (arr == NULL)
exit(-1);
arr[items - 1] = p;
p = strtok(NULL, delimiter);
}
for (int i = 0; i < items; ++i)
printf ("arr[%d] = %s\n", i, arr[i]);
free(arr);
}
int main()
{
char s[] = "c:is:a:general:purpose:procedural:computer:programming:language";
split(s, ":");
return 0;
}
/*
run:
arr[0] = c
arr[1] = is
arr[2] = a
arr[3] = general
arr[4] = purpose
arr[5] = procedural
arr[6] = computer
arr[7] = programming
arr[8] = language
*/